gpt4 book ai didi

.htaccess - mod重写htaccess问题

转载 作者:行者123 更新时间:2023-12-04 08:10:16 24 4
gpt4 key购买 nike

底部的 4 条重写规则工作正常,但是一旦我添加了第一条规则,以便我可以从标准页面(例如 about.php)隐藏 .php 扩展名,那么最后一条规则就停止工作了?
根据最后一条规则,我希望 URL 为 domain.com/123,但页面实际上是/offer.php?id=123

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php
RewriteRule ^preview/([^/]*)$ /create-preview.php?id=$1 [L]
RewriteRule ^update/([^/]*)$ /update.php?id=$1 [L]
RewriteRule ^delete/([^/]*)$ /delete.php?id=$1 [L]
RewriteRule ^([^/]*)$ /offer.php?id=$1 [L]

最佳答案

像这样:

Options -MultiViews
RewriteEngine On

RewriteRule ^preview/([^/]+)/?$ create-preview.php?id=$1 [L,QSA,NC]

RewriteRule ^(update|delete)/([^/]+)/?$ $1.php?id=$2 [L,QSA,NC]

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{DOCUMENT_ROOT}/$1.php -f
RewriteRule ^(.+?)/?$ $1.php [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)/?$ offer.php?id=$1 [L,QSA]
变化是:
  • 禁用 MultiViews (内容协商)因为有 2 种情况下 php 文件名与起始路径名相同,即 /update/delete .
  • 使用正则表达式将以上 2 条规则合二为一
  • 放置php这些规则之后和最后一个前端 Controller 规则之前的扩展规则
  • 最后一个前端 Controller 规则需要 2 RewriteCond跳过物理文件和目录。
  • 关于.htaccess - mod重写htaccess问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66010302/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com