Htaccess规则冲突

时间:2012-07-12 09:59:31

标签: .htaccess rewrite conflict

我写了一些htaccess规则。但存在冲突。我无法解决问题。

RewriteRule ([a-z]+)/(.+).php /$2.php?lang=$1 [QSA,L]

语言规则/en/login.php => /login.php?lang=en等。

此外我有另一条规则

RewriteRule ^album/([0-9]+)/playlist\.xml$ includes/xml/mediaxml.php?album=$1

此规则适用于演示音乐专辑。 album / ID / playlist.xml =>包括/ XML / mediaxml.php?专辑= $ 1

我们的客户可以通过此播放列表收听音乐。之前我写了playlist.xml规则。

当我添加语言支持时。我注意到了这个问题。我该如何解决?

你有什么想法吗?

编辑:

所有.htaccess代码

Options +FollowSymLinks
RewriteEngine on

RewriteCond %{HTTP_HOST} ^dunyaturizm\.com\.tr$
RewriteRule (.*) http://www.dunyaturizm.com.tr/$1 [R=301,L]

#php scriptleri languagelere dönderiyor
RewriteRule ^album/([0-9]+)/playlist\.xml$ includes/xml/mediaxml.php?album=$1 [QSA,L]
RewriteRule ([a-z]+)/(.+).php /$2.php?lang=$1 [QSA,L]
RewriteRule ^en/$ http://www.dunyaturizm.com.tr/?lang=en

#Ürün Detay Sayfası
RewriteRule ^([a-zA-Z0-9_-]+)-([0-9]+)\.html$ product.php?pid=$2&lang=tr
RewriteRule ^en/([a-zA-Z0-9_-]+)-([0-9]+)\.html$ product.php?pid=$2&lang=en

#Kategori Sayfası
RewriteRule ^([a-zA-Z0-9_-]+)-([0-9]+)$ product.php?cid=$2

RewriteRule ^sitemap\.xml$ sitemap.php [L]

ErrorDocument 404 /404.php

2 个答案:

答案 0 :(得分:1)

重新排序规则(首先制作相册规则)并向其添加L标志,这样规则执行将在匹配时立即停止:

RewriteEngine on

RewriteRule ^album/([0-9]+)/playlist\.xml$ includes/xml/mediaxml.php?album=$1 [L]

RewriteCond %{REQUEST_URI} !^includes/xml/mediaxml\.php$
RewriteRule ([a-z]+)/(.+).php /$2.php?lang=$1 [QSA,L]

答案 1 :(得分:0)

嗯,我不太确定,但我认为如果你移动专辑Up with L flag应该有效。