我正在尝试使用mod_rewrite
进行重定向。
这就是我的期望:
/tags/exampletag
的内容,则会view.php?tag=exampletag
view.php?name=titlegoeshere
。我尝试了下面的代码,但它只返回其中一条规则。
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ view.php?name=$1 [L]
RewriteRule ^tags/(.*)$ view.php?tag=$1 [L]
#also second one doesn't fires style, js files.
#I suppose because of looking a directory which is not exist.
答案 0 :(得分:0)
问题是你的第一条规则匹配所有内容,因此每个请求都会被重写为“view.php”。这意味着第二条规则永远不会匹配,永远不会触发。
如果你使第一条规则中的模式更加严格,那么你可以避免它与所有东西相匹配。例如:
RewriteRule ^([^/]+)$ view.php?name=$1 [L]
这只会匹配不包含正斜杠的请求。所以“标题”会匹配,但“标签/标题”不会。这将允许请求“标签/标题”滑过第二个规则,这将匹配它。
关于无法找到CSS和JS文件的问题,请参阅my answer to a user who has the same problem。 (简而言之,当您从相对CSS,JS和图像路径重建完整文件路径时,您需要考虑Web浏览器认为页面所在的位置。)