【发布时间】:2012-05-20 07:29:38
【问题描述】:
我不太习惯使用 htaccess 文件,所以我在这个文件上挣扎了一段时间:
我想知道如何在添加尾部斜杠(301 重定向)后将 URL (example.com/foo/bar) 重写为 (example.com/index.php?q=/foo/bar)到初始 URL:
我知道如何单独添加斜杠:
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]
但我就是不知道如何同时做这两个...
非常欢迎任何帮助!
皮埃尔·弗赖斯
【问题讨论】:
-
只需将两组行放入一个文件中。无需重复
RewriteEngine on部分。但是我会使用^(.+)$ -
嗯,这当然是我尝试的第一件事 :) 但它不起作用... 但是我注意到将重写 index.php 首先使 301 重定向转到 index.php? q=XXX 而不是添加尾部斜杠...
-
重定向应始终排在第一位。你能解释一下什么不起作用吗?我假设这两个脚本都是自己工作的?我真的不明白为什么它不起作用。我唯一能想到的是,当 $_GET['q'] 以斜杠结尾时,php脚本不喜欢它?
-
确实这 2 个脚本是自己工作的:重定向一个添加斜杠,但我得到一个 404 错误(当然 ^^)和重写一个工作,但我没有斜杠结束。当他们在一起时不起作用的是重定向。重写仍在进行中...
标签: apache .htaccess mod-rewrite