用于固定模式 URL 重定向的 .htaccess 重写规则


.htaccess rewrite rule for redirection for fixed pattern URL

我正在尝试为博客模块编写.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]