mod_rewrite使用重写的名称而不是原始名称

时间:2014-08-20 03:24:06

标签: apache .htaccess mod-rewrite url-rewriting

对于熟悉mod_rewrite的人来说,这可能是一个非常基本的问题,但我现在不是这样:

我正在尝试将网址从baseurl/school/<name>重定向到baseurl/school/result.php?name=<name>。我的.htaccess目前看起来像这样:

Options +FollowSymLinks
RewriteEngine On
RewriteRule ^school/([^/]+)/?$ school/result.php?name=$1 [NC]

我向baseurl/school/aoeu提出了测试请求。请求被重写,但result.php脚本将$_GET['name']的值报告为&#34; result.php&#34;,而不是&#34; aoeu&#34;。我尝试将GET变量更改为&#34; name&#34;但问题仍然存在。

1 个答案:

答案 0 :(得分:1)

您需要添加一些条件以防止循环。重写引擎继续运行规则,直到生成的URI停止更改。尝试:

Options +FollowSymLinks
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^school/([^/]+)/?$ school/result.php?name=$1 [NC]