2014-02-16 148 views
1

我正在寫一個簡單的.htaccess - 文件來限制對我的網站的訪問。
現在,這個網站是好的,我想重寫URL,但似乎我的regexs沒有效果..Apache重寫規則新手

這裏是我的.htaccess - 文件:

AuthType Basic 
AuthUserFile /www/MW_qXXGGqXqq/mysite.it/.htpasswd 
AuthName "Members Area" 
require valid-user 
RewriteEngine on 
RewriteBase/
DirectoryIndex index.php 

RewriteCond %{HTTP_REFERER} !^$ 
RewriteCond %{HTTP_REFERER} !^https?://(?:www\.)?mysite.it(?:$|/) [NC] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 

RewriteRule \.(gif|jpg|jpeg|png|mp3|mpg|avi|mov)$ - [F,NC] 

RewriteRule ^[management]$ yacht_management.php [NC,L] 
RewriteRule ^[yacht]$ list_yacht.php [NC,L] 
RewriteRule ^[technicalsupport]$ technical_support.php [NC,L] 
RewriteRule ^[crew]$ inquiry.php [NC,L] 
RewriteRule ^[contact]$ contact.php [NC,L] 

哪有我改變了這段代碼,所以我的網址變成了www.mysite.it/management/而不是www.mysite.it/yacht_management.php

回答

0

您使用的是[character class]這裏:

RewriteRule ^[management]$ yacht_management.php [NC,L] 

這將整個單詞不匹配,但只是從它的一個字母。

離開了方括號:

RewriteRule ^management$ yacht_management.php [NC,L] 

然後還包括你想尾隨/斜線,preferrably使其可選的?

RewriteRule ^management/?$ yacht_management.php [NC,L] 

同樣爲您的所有其他規則。

+0

另請參見[開源RegexBuddy替代品](http://stackoverflow.com/questions/89718/is-there)和[在線正則表達式測試](http://stackoverflow.com/questions/32282/regex-testing )一些有用的工具,或[RegExp.info](http://regular-expressions.info/)更好的教程。 – mario

+0

我試過,但似乎不影響網址..它仍然是一樣的.. 我想,例如,一個網址變成: www.easyyacht.ch/yacht_management.php到 www.easyyacht .ch /managment 我不知道它爲什麼不起作用。 –

+0

mod_rewrite是用於傳入的URL,而不是打補丁。重寫自己的HTML鏈接。 – mario