htaccess在文件名前使用param重写规则

时间:2016-06-20 00:40:59

标签: .htaccess mod-rewrite url-rewriting friendly-url

我无法让我的重写规则发挥作用。我已经阅读了教程但没有解释清楚如何在我没有调用根索引的情况下在文件名之前使用参数。似乎我的索引规则覆盖了所有其他规则。

我希望我的索引根据特定标签显示画廊,所以所有类型的链接都会转到index.php

www.mawebsite.com/en/tag/karate = www.mawebsite.com?lang=en&tag=karate

这部分工作正常,我的画廊按照我的意愿加载。但后来我希望能够使用其他文件。

www.mawebsite.com/en/video/videoid/video-title = www.mawebsite.com/video.php?lang=en&guid=videoid&title=video-title.

这是我的htaccess文件到目前为止的样子。

编辑我的文件:

AddCharset UTF-8 .html
ErrorDocument 404 /notfound.html


RewriteBase /
RewriteEngine on
RewriteRule ^(\w\w)/(video)/([^/]+)/([^/]+)/?$ /$2.php?lang=$1&guid=$3&title=$4 [L]
RewriteRule ^fr/video/guid/title$ video.php [L]
RewriteRule fr/tag/([^/]+/.+)$ /?=$1 [L,QSA]
#RewriteRule ^([^/]+)$ index.php?p=$1 [L]

Redirect 301 /css/file.css /css/file.php

我试图去video.php工作的任何事情。

1 个答案:

答案 0 :(得分:0)

尝试以下规则:

RewriteEngine On
RewriteRule ^(\w\w)/(video)/([^/]+)/([^/]+)/?$ /$2.php?lang=$1&guid=$3&title=$4 [L]

重写规则的排序起着非常重要的作用。首先保留更具体的规则:

AddCharset UTF-8 .html
ErrorDocument 404 /notfound.html

Redirect 301 /css/file.css /css/file.php

RewriteBase /
RewriteEngine on
RewriteRule ^([^/]+)/?$ index.php?p=$1 [L]
RewriteRule ^(\w\w)/(tag)/([^/]+)/?$ /?lang=$1&$2=$3 [L,QSA]
RewriteRule ^(\w\w)/(video)/([^/]+)/([^/]+)/?$ /$2.php?lang=$1&guid=$3&title=$4 [L]