1

我不太习惯使用 htaccess 文件,所以我在这个文件上挣扎了一段时间:

我想知道如何将 URL (example.com/foo/bar) 重写为 (example.com/index.php?q=/foo/bar) 在向初始添加斜杠(301 重定向)之后网址:

我知道如何单独添加斜杠:

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]

但我就是想不通如何同时做这两个...

任何帮助都非常受欢迎!

皮埃尔·弗赖斯

4

2 回答 2

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]
于 2012-05-11T22:34:21.720 回答
0

您在这里有一个接受的答案,但我仍然喜欢回答这个问题,因为实际答案比通过多个(和慢速)重定向运行它更简单,就像在另一个答案中一样。

将此代码放在您.htaccessDOCUMENT_ROOT目录下:

Options +FollowSymLinks -MultiViews
RewriteEngine On
RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php?q=%{REQUEST_URI} [L]
于 2012-05-12T00:04:20.403 回答