1

我使用以下重写规则在后台将 /pageName 和 /pageName/ 等地址重写为 index.php?page=pageName。它工作得很好,除非 pageName 包含 -。

RewriteEngine On
RewriteRule ^(\w+)$ /index.php?page=$1
RewriteRule ^(\w+)/$ /index.php?page=$1

如何让这些重写规则接受任何输入(或至少包含 AZ、1-9 和 - 的输入)。

谢谢你。

4

3 回答 3

1
RewriteEngine On
RewriteRule ^([0-9a-zA-Z-]+)$ /index.php?page=$1
RewriteRule ^([0-9a-zA-Z-]+)/$ /index.php?page=$1

这应该有效。

于 2013-07-17T18:55:04.810 回答
1

\w相当于[0-9a-zA-Z_]。例如大写+小写字母字符和下划线。-不是其中的一部分,因此您必须明确允许它:

^([\w\-])$

通过创建自己的角色类。

于 2013-07-17T18:55:18.827 回答
1

您(可能...)不想重写任何现有文件,因此您可以使用以下内容:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([\w\-]+)/?$ /index.php?page=$1

请注意,我将尾部斜杠设为可选。

于 2013-07-17T19:12:33.393 回答