除了重写规则中的某些网址

时间:2018-10-09 09:30:46

标签: php .htaccess url-rewriting

我在我的.htaccess文件中插入了此规则:

RewriteRule ^([A-Za-z0-9-]+)/?$   index.php?content=category&categoryname=$1  [NC,L]

这样,我可以得到如下友好的URL: http://localhost/mysite/london

我也想对我的联系页面使用友好的网址,如下所示: https://localhost/mysite/index.php?content=message成为: https://localhost/mysite/contact

但是如果我将以下规则插入.htaccess ...

RewriteRule   ^contact/?$   index.php?content=message  [NC,L] 

...这似乎不起作用,因为似乎类别规则会影响此规则。

实际上,如果我注释掉类别规则...

#RewriteRule   ^([A-Za-z0-9-]+)/?$   index.php?content=category&categoryname=$1  [NC,L]

...联系人页面的url友好规则有效(https://localhost/mysite/contact

因此,我正在寻找从类别规则中排除某些参数的可能性,以允许在某些情况下重定向到另一个URL。

感谢您的任何建议...

1 个答案:

答案 0 :(得分:0)

首先,您需要确保将联系规则放在更通用的规则之前,以便htaccess可以首先对其进行处理:

RewriteRule ^contact/?$ index.php?content=message [NC,L]
RewriteRule ^([A-Za-z0-9-]+)/?$ index.php?content=category&categoryname=$1 [NC,L]

如果您有其他方法,将始终查看通用规则并进行匹配,直到htaccess甚至没有联系规则为止。

请注意,尽管您编写规则的方式只会匹配以下网址,例如

https://exmaple.com/contact

但不是

https://exmaple.com/contact/something-else

但是,看看您更通用的规则,我认为这是故意的。