2013-05-13 107 views
0

我工作在我的网站的htaccess。.htaccess双变量的问题

我有这片.htacess的:

ErrorDocument 404 /404.html 

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 


RewriteRule ^/([a-zA-z0-9]+)/([a-zA-z0-9]+).html$ index.php?lang=$2&seo=$1 [QSA,L] 

RewriteRule ^/([a-zA-z0-9]+).html$ index?seo=$1 [QSA,L] 

什么IAM与此的.htaccess看是这样的:http://mywebsite.com/en/test-page.html insted的的http://mywebsite.com/index.php?lang=en&seo=test-page承担数“恩”为“郎”和“测试页“as”seo“。

问题是,这会引发404错误。

有没有办法解决这个问题?

回答

0

试试这个,我认为问题是index?seo必须是index.php?seo并跳过标志,如果你把它S=1样式匹配跳过一个重写规则后

RewriteRule ^/([a-zA-z0-9]+)/([a-zA-z0-9]+).html$ index.php?lang=$1&seo=$2 [S=1,QSA,L] 

RewriteRule ^/([a-zA-z0-9]+).html$ index.php?seo=$1 [QSA,L] 

,如果你想通过查询也使用此

RewriteRule ^/([a-zA-z0-9]+)/([a-zA-z0-9]+).html(.*)$ index.php?lang=$1&seo=$2$3 [S=1,QSA,L] 

RewriteRule ^/([a-zA-z0-9]+).html(.*)$ index.php?seo=$1$2 [QSA,L] 
+0

仍然收到404错误。 – Joscplan 2013-05-13 15:23:19

0

尝试从你的正则表达式除去最主要的斜线:

RewriteEngine On 
RewriteBase/

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^([a-zA-z0-9]+)/([a-zA-z0-9]+)\.html$ index.php?lang=$1&seo=$2 [QSA,L] 

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^([a-zA-z0-9]+)\.html$ index.php?seo=$1 [QSA,L] 

另请注意,RewriteCond仅适用于一个RewriteRule

+0

试过但没有运气与这一个。 – Joscplan 2013-05-13 15:23:44

+0

@JoseCardama Hm,尝试重定向到URL,看看你得到了什么:'[R,QSA,L]' – Korikulum 2013-05-13 15:25:57

+0

RewriteRule ^([a-zA-z0-9] +)/([a-zA-z0-9 ] +)\。html $ pages/anime.php?lang = $ 1&seo = $ 2 [R,QSA,L]将我发送到索引页,与以前一样。 – Joscplan 2013-05-13 15:32:08