2016-01-01 3 views
0

Я пряча расширения файлов с.htaccess перенаправляет без расширения в URL

RewriteEngine On 

# Unless directory, remove trailing slash 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^([^/]+)/$ http://example.com/folder/$1 [R=301,L] 

# Redirect external .php requests to extensionless url 
RewriteCond %{THE_REQUEST} ^(.+)\.php([#?][^\ ]*)?\ HTTP/ 
RewriteRule ^(.+)\.php$ http://example.com/folder/$1 [R=301,L] 

# Resolve .php file for extensionless php urls 
RewriteRule ^([^/.]+)$ $1.php [L] 

Когда я перейти по этой ссылке http://localhost/website/profile?user=user01&nofollow=1

Я перенаправлен здесь http://example.com/folder/profile?user=user01

I» выбрали .php из URL. Почему это перенаправляет меня?

+0

Да, это находится внутри каталога/веб-сайта /. Я не совсем понимаю, как работает этот код. Я скопировал его из сообщения здесь в stackoverflow. – brewpixels

+0

Это правильно. – brewpixels

ответ

1

Имейте это так внутри /website/.htaccess:

RewriteEngine On 
RewriteBase /website/ 

# Unless directory, remove trailing slash 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^([^/]+)/$ $1 [R=301,L] 

# Redirect external .php requests to extensionless url 
RewriteCond %{THE_REQUEST} ^(.+)\.php[?\s] [NC] 
RewriteRule ^(.+)\.php$ $1 [R=301,L,NC] 

# Resolve .php file for extension-less php urls 
RewriteCond %{REQUEST_FILENAME}.php -f 
RewriteRule ^([^/.]+)$ $1.php [L] 

Убедитесь, чтобы очистить кэш браузера перед тестированием этого.

+0

Это работает, но если кто-то добавляет .php к именам файлов, я получаю ERR_TOO_MANY_REDIRECTS. Я заметил, что, когда я беру символ «&» из моего URL-адреса, он работает. Возможно, '&' нужно добавить в RewriteRule, но я не знаю, куда он должен идти. – brewpixels

+0

Можете ли вы сказать, какой URL-адрес вызывает эту ошибку? – anubhava

+0

Да, HTTP: // локальный/сайт/профиль = user01 & NOFOLLOW = 1 Когда я удалить и символ Я не перенаправляется example.com – brewpixels

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