我有以下网址:
www.website.com/index.php?section=index
www.website.com/index.php?section=freebies
www.website.com/index.php?section=deals
www.website.com/index.php?section=articles
以及每个的以下分页url参数: 页= 1 例如
www.website.com/index.php?section=freebies&page=1
我正在使用下面的重写规则将网址更改为:
www.website.com/freebies/1 etc
www.website.com/freebies/1
和www.website.com/freebies/
正常工作
但是如果我删除尾部斜杠,例如:
www.website.com/freebies
显示www.website.com/freebies/?section=freebies&page=1
如何阻止这种情况发生。
我的重写规则:
RewriteRule ^([0-9]+)/?$ index.php?section=index&page=$1 [NC,L]
RewriteRule ^freebies/?$ index.php?section=freebies&page=1 [L]
RewriteRule ^articles/?$ index.php?section=articles&page=1 [L]
RewriteRule ^deals/?$ index.php?section=deals&page=1 [L]
RewriteRule ^freebies/([0-9]+)/?$ index.php?section=freebies&page=$1 [NC,L]
RewriteRule ^articles/([0-9]+)/?$ index.php?section=articles&page=$1 [NC,L]
RewriteRule ^deals/([0-9]+)/?$ index.php?section=deals&page=$1 [NC,L]
答案 0 :(得分:1)
如果我理解正确,你总是需要尾随斜杠,所以你的规则总能奏效 如果是这种情况,那么在您现有规则之上,添加以下内容:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)([^/])$ /$1$2/ [L,R=301]
或者如果这对您不起作用,请检查其他添加尾部斜杠的技巧。
侧尖:
您现有的htacces规则
RewriteRule ^freebies/?$ index.php?section=freebies&page=1 [L]
RewriteRule ^articles/?$ index.php?section=articles&page=1 [L]
RewriteRule ^deals/?$ index.php?section=deals&page=1 [L]
只需一条规则即可简化:
RewriteRule ^(freebies|articles|deals)/?$ index.php?section=$1&page=1 [L]
修改强>
你可以做你所要求的(使用斜线和没有斜线)。我认为这样的事情会成功(未经测试):
RewriteRule ^freebies/?$ index.php?section=freebies&page=1
(请注意斜线后的?)
另外,阅读https://webmasters.googleblog.com/2010/04/to-slash-or-not-to-slash.html)以检查G如何处理这些情况。
答案 1 :(得分:1)
freebies
似乎是一个真实的目录,而Apache的mod_dir
模块为目录添加了一个尾部斜杠会导致重定向,从而将您的内部URL暴露给客户端。
您可以使用:
RewriteEngine On
# internally add a trailing slash to directories
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^(.*?[^/])$ %{REQUEST_URI}/ [L]
RewriteRule ^([0-9]+)/?$ index.php?section=index&page=$1 [NC,L,QSA]
RewriteRule ^freebies/?$ index.php?section=freebies&page=1 [L,NC,QSA]
RewriteRule ^articles/?$ index.php?section=articles&page=1 [L,NC,QSA]
RewriteRule ^deals/?$ index.php?section=deals&page=1 [L,QSA,NC]
RewriteRule ^freebies/([0-9]+)/?$ index.php?section=freebies&page=$1 [NC,L,QSA]
RewriteRule ^articles/([0-9]+)/?$ index.php?section=articles&page=$1 [NC,L,QSA]
RewriteRule ^deals/([0-9]+)/?$ index.php?section=deals&page=$1 [NC,L,QSA]