2013-07-17 62 views
1

我使用下面的重寫規則來在幕後重寫地址,如/ pageName和/ pageName /到index.php?page = pageName。除了當pageName包含 - 時,它完美地工作。Htaccess重寫不喜歡破折號

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

我怎樣才能得到這些重寫規則接受任何輸入(或至少包含輸入AZ,1-9個,和-'s。

謝謝。

回答

1

你(也許...)不想重寫任何現有的文件,所以你可以使用類似:

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

注意,我做了結尾的斜線可選。

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

1

\w相當於[0-9a-zA-Z_]。例如:大寫+小寫字母字符,以及底線。-而不是它一部分,所以你必須明確地允許它:通過創建自己的字符類

^([\w\-])$