好的,所以我有一个网址

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/

10-14 12:22