好的,所以我有一个网址
domain.com/item/item_id/item_description/page
当我键入没有链接
/page
在网址上会引发404错误,我必须在网址上键入斜杠以使其正常工作。
这是我的htaccess代码
Options +FollowSymLinks
RewriteEngine On
RewriteRule ^item/([0-9]+)/(.*)/(.*)/?$ item.php?action=item&id=$1&desc=$2&page=$3
我在搜索后发现了这个:
# add trailing slash
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^.*[^/]$ /$0/ [L,R=301]
这有点解决了我的问题,但是如果用户想要添加尾部斜杠,我如何使尾部斜杠成为可选的,因此每次找不到斜杠时都不会重定向
最佳答案
您可以使用一个重写器来处理请求。
RewriteRule ^item(?:\.php)/([0-9]+)/([^/]+)?/?([^/]+)?/?$ item.php?action=item&id=$1&desc=$2&page=$3 [L]
Please note I have added (?:\.php)
before ^item
, just to be sure this rewriterule works, if your webserver for some reason convert request
domain.com/item/...
进入
domain.com/item.php/...
提示:您可以看到当前的重写器行为启用了RewriteLog:
RewriteLogLevel 9
RewriteLog "/var/log/apache2/dummy-host.example.com-rewrite_log"
注意不要在生产中使用此功能。
关于apache RewriteRule需要在URL末尾加上斜杠才能正常工作,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6321043/