在我们的CMS上,我们使用以下的.htaccess代码来提供来自CMS的页面:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/\.]+)/?$ index.php?slug=$1
因此,通过将页面的段落传递给index.php
来提供页面我们遇到的问题是,如果您转到此页面,例如:
http://www.example.com/index.php?slug=contact
您被重定向到此页面:
http://www.example.com/?slug=contact
我们在.htaccess中也有这个将index.php发送回root:
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index.php
RewriteRule ^index.php$ http://www.example.com/ [R=301,L]
我们如何才能最终获得此网址:
http://www.example.com/contact
非常感谢任何帮助。
答案 0 :(得分:2)
您可以在root .htaccess中使用此代码:
RewriteEngine On
RewriteBase /
# external redirect from actual URL to pretty one
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+(?:index\.php)?\?slug=([^\s&]+) [NC]
RewriteRule ^ /%1? [R=302,L]
RewriteCond %{THE_REQUEST} /index\.php [NC]
RewriteRule ^(.*?)index\.php$ /$1 [L,R=302,NC,NE]
# internal forward from pretty URL to actual one
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^/([^/]+)/?$ index.php?slug=$1 [L,QSA]