2014-02-16 5 views
1

Я пишу простой файл .htaccess - файл, чтобы ограничить доступ к моему сайту.
Теперь, что этот сайт нормально, я хотел бы переписать URL, но мне кажется, что мои regexs не имеют никакого эффекта ..Apache Rewrite Rule newbie

Вот мой .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] 

Как может Я меняю этот код, поэтому мой url становится 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] 

Затем также включает завершающий слэш /, что вы хотите, предпочтительно сделать необязательным с ?:

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

То же самым для всех других правил.

+0

См. Также [Альтернативы с открытым исходным кодом RegexBuddy] (http://stackoverflow.com/questions/89718/is-there) и [Online regex testing] (http://stackoverflow.com/questions/32282/regex-testing) для некоторых полезных инструментов или [RegExp.info] (http://regular-expressions.info/) для лучшего учебника. – mario

+0

Я пробовал, но, похоже, не влияет на URL .. он остается тем же .. Хотелось бы, например, чтобы URL-адрес стал таким: www.easyyacht.ch/yacht_management.php to www.easyyacht .ch/management Я не знаю, почему это не работает. –

+0

'mod_rewrite' предназначен для входящих URL-адресов, а не для исправления исходящих. Перепишите в HTML-ссылки самостоятельно. – mario