这是我当前的.htaccess文件:
Options +FollowSymlinks
Options -Indexes
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^feature/$ /items/feature [L]
RewriteRule ^feature$ /items/feature [L]
RewriteRule ^top_sellers/$ /items/top_sellers [L]
RewriteRule ^top_sellers$ /items/top_sellers [L]
RewriteRule ^support/$ /contacts [L]
RewriteRule ^support$ /contacts [L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]
</IfModule>
除了以下内容之外,所有重写规则都有效:
RewriteRule ^support/$ /contacts [L]
RewriteRule ^support$ /contacts [L]
我不明白为什么mysite.com/support
会在所有其他重定向工作正常时显示404页面。此外,当我转到mysite.com/contacts
时,没有404错误 - 它正确加载页面。
在cPanel服务器上,由于某些奇怪的原因,网址中带有support
的重定向是否有任何原因?
答案 0 :(得分:0)
您可以使用此单一规则
代替这两条规则RewriteRule ^support/?$ /contacts [NC,L]
在此模式中,url末尾的斜杠是可选的。并且将接受以斜杠(/)结尾的URL。
答案 1 :(得分:0)
您的规则可以整合很多,但也要告诉Apache在处理规则之前确保它不是真正的文件或目录。试试这些规则。
Options +FollowSymlinks -Indexes -Multiviews
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(feature|top_sellers)/?$ /items/$1 [L,NC]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^support/?$ /contacts [L,NC]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]
</IfModule>