我有htaccess:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /pages/$1 [L]
将/pages/从url移到
但是当我打开没有斜杠结尾的链接时:
site.com/contacts
被重定向到
site.com/pages/contacts/
有办法解决这个问题吗?
我尝试过不同的结果,大多数情况下其他选项导致重定向到site.com/index.php (site.com/pages/index.php)
这是因为pages/contacts
是一个目录,Apachemod_dir
模块在请求目录后添加了一个斜杠。
您可以检查目录是否存在,并在重写pages/
之前通过规则添加末尾的/
:
RewriteEngine On
# add a trailing slash if pages/$1 is a directory
RewriteCond %{DOCUMENT_ROOT}/pages/$1 -d
RewriteRule ^(.*?[^/])$ %{REQUEST_URI}/ [L,R=301,NE]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /pages/$1 [L]
请确保使用不同的浏览器或从浏览器中删除缓存数据来测试此规则,以避免旧的缓存。