2013-02-24 75 views
0

这是我的域名的页面:www.mydomain.com/en/stats.php为什么不重写这个URL?

我希望它看起来像这样:www.mydomain.com/en/statistics/players

这是很简单,但由于某些原因,下面的htaccess代码不起作用。

Options +FollowSymLinks 

RewriteEngine On 
RewriteRule ^/statistics/players stats.php [R=301,L,QSA] 

当我尝试打开搜索引擎优化版本时,出现404错误。当我使用常规URL时,该页面可以正常打开。我究竟做错了什么?

+0

对于正则表达式'^'手段开始线,但是你的网址以'''/''''开头,所以它不会匹配。尝试从你的代码中删除'^ /',或者使你的正则表达式更加精确'^/en/foobar/baz/en/foo.php' – x539 2013-02-24 16:25:23

回答

0

我认为它需要:

RewriteEngine On 
RewriteRule ^en/statistics/players en/stats.php [QSA] 

R=301意味着它将转而执行重写的重定向并尝试重定向到/stats.php其犯规存在,我猜。

L标志意味着这是最后的重写规则,将处理这个请求,在这种情况下,我怀疑是你想要的。如果/en/stats.php中有更多的重写规则,它们将不会被处理。

+0

对。 301在那里是错误的。我已经删除了它,因为它没有必要。但是,无论我是否使用您的版本,它仍然不起作用。 – jovan 2013-02-24 16:19:38

+0

您需要确保您也考虑到URL的en部分。我虽然不是100%确定这会起作用,但可能需要更多调整,但我无法测试 – cowls 2013-02-25 10:18:59

0

URL可能没有前导斜杠。尝试没有或可选的斜杠。此外,您必须检查领导en,当你在一开始

RewriteRule ^/?en/statistics/players /en/stats.php 
0

到底是什么工作锚你的模式是这样的:

RewriteRule en/statistics/players en/stats.php [NC,L]