2013-10-02 2 views
1

Мне бы хотелось удалить несколько расширений в приложении.Удалите все расширения в файле .HTACCESS

Например, в каталоге с именем directory я имею эти файлы

  • samplehtml.html
  • samplephp.php
  • sample.pl

Я хотел бы получить доступ к этим файлам без расширений, таких как

  • example.com/samplehtml
  • example.com/samplephp
  • example.com/sample

Я нашел этот кусок кода, который работает для удаления одного расширения.

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^([^\.]+)$ $1.cgi [NC,L] 

Когда я пытаюсь добавить дополнительные расширения с помощью этого кода, работает только первый. У меня есть один выше, как

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^([^\.]+)$ $1.cgi [NC,L] 
RewriteRule ^([^\.]+)$ $1.html [NC,L] 
RewriteRule ^([^\.]+)$ $1.php [NC,L] 

Надеюсь, что последний бит, который был расширен, имеет некоторые проблемы. Может кто-то помочь мне решить.

ответ

4

Да RewriteCond применимо к следующему RewriteRule. Вы можете иметь 3 правила, как:

Options +FollowSymLinks -MultiViews 
RewriteEngine On 
RewriteBase/

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{DOCUMENT_ROOT}/$1.php -f 
RewriteRule ^(.+?)/?$ /$1.php [L] 

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{DOCUMENT_ROOT}/$1.html -f 
RewriteRule ^(.+?)/?$ /$1.html [L] 

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{DOCUMENT_ROOT}/$1.cgi -f  
RewriteRule ^(.+?)/?$ /$1.cgi [L] 

Альтернатива: Вы можете избежать всех вышеуказанных правил со следующими Options:

Options +FollowSymLinks +MultiViews 

+0

Это один работал отлично, когда я заменил первую строку кода с указанной альтернативой. Использование только первой части кода, поскольку она не работает для меня (она выдает ошибку 404). – Bubi

+0

Рад, что это сработало. – anubhava

Смежные вопросы