避免.htaccess在URL末尾显示变量

时间:2012-03-23 05:46:14

标签: php .htaccess url-rewriting

我在这里有一个奇怪的问题;以下.htaccess可以工作但现在(在更改为专用服务器之后)它只是将变量附加到浏览器地址栏的url末尾;例如:

如果我打电话给.. http://www.mydomain.com/sports

它改写了这样...... :( http://www.mydomain.com/index.php?u=sports

我只是希望它保持完全像它被称为:)

RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php [L]

RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule .* - [L]
RewriteRule ^(.*)$ http://www.mydomain.com/index.php?u=$1 [NC]

先谢谢!

1 个答案:

答案 0 :(得分:1)

最后一条规则应如下所示:

RewriteRule ^([^?]*) index.php?u=$1 [L,QSA]
  

[QSA] - 当替换URI包含查询字符串时,默认值   RewriteRule的行为是丢弃现有的查询字符串,并且   用新生成的替换它。使用[QSA]标志会导致   要组合的查询字符串。

     

[L] - [L]标志使mod_rewrite停止处理规则集。   在大多数情况下,这意味着如果规则匹配,则不再进一步   规则将被处理。这对应于Perl中的最后一个命令,   或者在C中使用break命令。使用此标志指示当前   应立即应用规则而不考虑进一步的规则。