我正在尝试为博客模块编写.htacces重写规则。
如果 => www.xyz.com/index.php 它不应该重定向任何内容
如果 => www.xyz.com/contactus.php 它不应该重定向任何内容
但如果 => www.xyz.com/blogs/test-string1-and-string2
(博客页面的网址固定)
它应该重定向到 blog_details.php?id=$1
我尝试了以下规则:
RewriteCond %{HTTP_HOST} !/blog/
RewriteRule blogs/('w+) blog_details.php?id=$1 [NC]
这不是完美的规则。它在生成站点地图和 SEO 结果时会导致问题。
我想对URL进行一些强有力的验证,例如URL末尾的.php或
在 blog/之后用连字符 (-) 分隔的单词。 然后我可以重定向网址。
首先,您不需要在此处检查HTTP_HOST
,因为您不会更改它。
如果你这样做,你应该把它与可能的主机名进行比较,而不是一个可能的URL,即
RewriteCond %{HTTP_HOST} !^www.nottherightone.tld$
要检查,如果 URL 不以".php"结尾并且包含连字符,这应该是一种可能性
RewriteCond %{REQUEST_URI} !.php$
RewriteRule blogs/(.*-.*) blog_details.php?id=$1 [NC]
以下规则应该适合您:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^blogs/(.+)$ blog_details.php?id=$1 [NC,L,QSA]