我不太习惯使用htaccess文件,所以我在这个问题上挣扎了一段时间:
我想知道如何在添加尾部斜杠(301重定向)后将URL(example.com/foo/bar)重写为(example.com/index.php?q=/foo/bar)到初始网址:
我知道如何单独添加尾部斜杠:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*)$ http://exemple.com/$1/ [L,R=301]
如何重写为index.php:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?q=$1 [L]
但我无法想象如何同时做两件事......
非常欢迎任何帮助!
Pierre Fraisse
答案 0 :(得分:2)
在你的.htaccess中尝试这个(我尽可能地测试了它):
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [L]
RewriteCond %{REQUEST_URI} [^/]$
RewriteRule ^(.*)$ $1/ [L,R=301]
RewriteRule ^(.*)$ index.php?q=$1 [L]
答案 1 :(得分:0)
你有一个接受的答案,但我仍然想回答这个问题,因为实际答案是更简单,通过多个(和慢)重定向运行它,就像在另一个答案中一样。
将此代码放在.htaccess
目录下的DOCUMENT_ROOT
:
Options +FollowSymLinks -MultiViews
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php?q=%{REQUEST_URI} [L]