Я получил следующее .htaccess работает отлично:How-to? Суета URL и игнорировать расширение .PHP с .htaccess
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule .* - [L]
RewriteRule ^(.*)$ http://www.mysite.com/mypage.php?u=$1 [NC]
Это позволит мне писать URLs так:
http://www.mysite.com/peter => http://www.mysite.com/mypage.php?u=peter
Но что, если Я хочу иметь правило aditional, чтобы не писать расширение .php для существующих файлов?
http://www.mysite.com/contact (contact.php exists on file)
Я попытался добавить это к моему Прев HTAccess (но не работает):
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php
Другими словами, я хотел бы иметь тщеславие URLs и игнорировать расширение .php в том же .htaccess ,
РЕШЕННЫЙ! Благодаря Ульриха Palha и Марио (не знал о заказе и ПОСЛЕДНЕГО [L] флаг!
RewriteEngine on
# Unless directory, remove trailing slash
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)/$ http://www.mysite.com/$1 [R=301,L]
# Redirect external .php requests to extensionless url
RewriteCond %{THE_REQUEST} ^(.+)\.php([#?][^\ ]*)?\ HTTP/
RewriteRule ^(.+)\.php$ http://www.mysite.com/$1 [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php [L]
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule .* - [L]
RewriteRule ^(.*)$ http://www.mysite.com/mypage.php?u=$1 [NC]
Правило для контакта отображается в верхней части вашего .htaccess? Если нет, переместите его вверх, ниже RewriteEngine на –
. Связано: http://stackoverflow.com/q/4026021/911182 – Herbert
Проверьте это: http://stackoverflow.com/a/8371815/1044340 – Nonym