Mod重写排除所有,但php



是否有可能以这样的方式编辑htaccess,只有以下url被重写,其余的不是?

http://www.example.com/index.php?x=foobar
 to
http://www.example.com/foobar/

我希望页面没有x=…作为一个变量

我得到了以下内容,但这不起作用

Options +FollowSymLinks
RewriteEngine on
RewriteRule (.*)/ index.php?x=$1
RewriteCond $1 !.(js|ico|gif|jpg|png|css|html|swf|mp3|wav|txt)$

谁能帮我?

首先,RewriteCond必须放在它所属的RewriteRule之前。

但我认为你需要另一种方法来处理你的情况,像这样:

RewriteRule (.*).php - [PT,L]
RewriteRule ^(.*)/$ index.php?x=$1
  • 第一条规则通过(PT)每个PHP页面,所以第二条规则只适用于所有非PHP请求。
  • 第二条规则只适用于"简单路径",无论该路径中是否有点(例如hello.gif/也会匹配)。

如果这对你不起作用,那么你可以考虑以下几点之一来开始进一步的研究:

  • 模式([^.]*)匹配所有没有点的内容
  • 请参阅RewriteCond跳过规则,如果文件或目录存在RewriteCond s,下面的RewriteRule仅在请求不指向现有文件或目录时使用

最新更新