rewriterule在.htaccess文件中不起作用

时间:2014-04-17 11:05:17

标签: php apache .htaccess mod-rewrite

我正在使用.htacess文件重写网址。我写了有效的rewritrule。但它的一个问题。也就是当页面完全加载时,浏览器中的url再次以querystring格式更改。我的代码如下。请帮助我如何设置它。

RewriteRule ^/?([0-9]+)/([A-Za-z,0-9,-]+)/?$ /mysite.com/player.php?/$1/$2 [R] 

我写这个网址

www.mysite.com/4/title

并将其重定向到

www.mysit.com/player.php?/4/title

它工作正常但是当页面完全加载到浏览器地址时

www.mysite.com/player.php?/4/title 

不会保留此格式

(www.mysit.com/4/title)

请帮助谢谢。

3 个答案:

答案 0 :(得分:0)

您可以通过设置R标记将自己重定向到错误的网址。这表明应该强制进行外部重定向。您可以改为添加L标志,因此在此之后不会执行重写规则:

RewriteRule ^/?([0-9]+)/([A-Za-z,0-9,-]+)/?$ /mysite.com/player.php?/$1/$2 [L]

答案 1 :(得分:0)

[R]标志会让您在物理上重定向到新地址,而不仅仅是在幕后重写URL。

RewriteRule ^/?([0-9]+)/([A-Za-z,0-9-]+)/?$ /mysite.com/player.php?/$1/$2

这应该有效。另外,看起来你在重写中使用,作为分隔符 - 这是不必要的,你不需要在char类型之间使用分隔符;您实际上是在URL中匹配,。如果这是设计的行为,你只需要一个逗号(你有2个)。

答案 2 :(得分:0)

首先你需要有这个规则:

RewriteEngine On

RewriteRule ^([0-9]+)/([A-Za-z,0-9,-]+)/?$ /player.php?/$1/$2 [L,QSA]

然后确保在css,js,images文件中使用绝对路径而不是相对路径。这意味着您必须确保这些文件的路径以http://或斜杠/开头。