htaccess удалить расширение .php, index.php И добавить косую черту - PullRequest
1 голос
/ 11 июня 2010

Это для базовых страниц HTML / PHP, без строк запроса и т. Д. Я искал максимум и низко и нахожу ресурсы для удаления «index.php» из URI или удаления «.php» и других расширений файлов... и даже добавляя косую черту.Но каждый раз, когда я пытаюсь использовать их все или использовать найденные примеры, я получаю ошибку сервера 500.

Я могу передать строку запроса на одной странице, но на самом деле я просто хочу удалить 'index.php 'со страницы индекса и имеют все подстраницы без расширения файла.Итак, что-то вроде этого:

domain.com / index.php для domain.com/ domain.com/page1.php для domain.com/page1/ domain.com/page2.php для domain.com/page2 / domain.com/page3.php to domain.com/page3/

Все примеры, которые я могу найти, сфокусированы на CMS и т. д. со строками запросов и т. д., а не только на основном URI, что, я думаю, могло быть причиной ошибок, которые я получал.

Любая помощь приветствуется !!Спасибо

Ответы [ 2 ]

5 голосов
/ 11 июня 2010

Однажды я получил это от довольно полезного парня на форуме - никогда не понимал его полностью, и есть одна оговорка; это подразумевает нет конечный слеш, если запрос не является каталогом.

Тем не менее, я думал, что это стоит опубликовать - гуру может легко найти исправление!?

# remove .php; use THE_REQUEST to prevent infinite loops
RewriteCond %{HTTP_HOST} ^www\.domain\.com
RewriteCond %{THE_REQUEST} ^GET\ (.*)\.php\ HTTP
RewriteRule (.*)\.php$ $1 [R=301]

# remove index
RewriteRule (.*)index$ $1 [R=301]

# remove slash if not directory
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} /$
RewriteRule (.*)/ $1 [R=301]

# add .php to access file, but don't redirect
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteCond %{REQUEST_URI} !/$
RewriteRule (.*) $1\.php [L]
0 голосов
/ 11 июня 2010

Вы можете попробовать это в файле htaccess:

Options +MultiViews

Но это зависит от того, включен ли он вашим веб-сервером.Также обратите внимание, что файлы htaccess относятся к веб-серверам Apache, поэтому они не будут работать, если вы используете что-то другое.

...