2015-01-22 3 views
2

У меня есть страница блога на моем сайте и .htaccess, как показано ниже, чтобы преобразовать URL-адреса SEO FriendlyИсключить подкаталоги из правила перезаписи HTAccess

RewriteRule ^([^/.]+)/?$ /blogdetail?prmn=$1 [L] 

Итак, мой URL становится http://example.com/title-of-blog, и она работает очень хорошо и удивительным, но мой клиент сообщил сегодня, что раздел администратора не работает должным образом, и я проверил и обнаружил, что URL http://example.com/admin преобразуется в http://example.com/admin?prmn=admin из-за вышеуказанного правила.

Я гугл, как исключить admin папки из Rewrite затем я получил ниже

RewriteRule ^admin($|/) - [L] 

Когда я использую это тогда, когда я типа http://example.com/admin затем получаю страницу ошибки, что я определен в HTAccess.

Пожалуйста, помогите. Моя Полная Htaccess как ниже

Options +FollowSymLinks 
RewriteEngine On 
RewriteRule ^admin($|/) - [L] 

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php 
RewriteRule ^index\.php$/[L,R=301] 

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index 
RewriteRule ^index\.php$/[L,R=301] 

RewriteCond %{HTTP_HOST} ^example\.com$ [NC] 
RewriteRule ^(.*)$ http://www.example.com/$1 [L,R=301] 

# remove .php from URL 
RewriteCond %{REQUEST_FILENAME}.php -f 
RewriteCond %{REQUEST_URI} !/$ 
RewriteRule (.*) $1\.php [L] 

# restrict .php 
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /[^\ ]+\.php($|\) 
RewriteRule \.php$/[F,L] 

# remove .html 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^([^/.]+)\.html$ /$1 [L,R=301] 

RewriteRule ^([^/.]+)/?$ /blogdetail?prmn=$1 [L] 

ErrorDocument 404 /error-page 
ErrorDocument 403 /error-page 
ErrorDocument 500 /error-page 
+0

Что делать, если вы изменили порядок инструкций в конфигурационных файлах? –

+0

Можете ли вы показать полный .htaccess в вопросе – anubhava

+0

у моего Htaccess есть заказ как RewriteEngine On #RewriteRule^admin ($ | /) - [L] RewriteRule^([^ /.] +) /? $/Blogdetail? Prmn = $ 1 [L] .. Итак, как вы хотите, чтобы заказ был заказан – Gags

ответ

1

Я полагаю, есть другое правило, которое делает что-то с /admin, а потому, что вы используете, что второе правило, которое он никогда не достигнет этого правила. Используйте условие, чтобы исключить все, начиная с администратора. Также обратите внимание, что правило переписывает его на /blogdetail?prmn=admin, поэтому где-то что-то переписывается больше.

RewriteCond %{REQUEST_URI} !^/(admin|blogdetail) 
RewriteRule ^([^/.]+)/?$ /blogdetail?prmn=$1 [L] 
+0

Это правило дает 500 Ошибка на моей странице блога сейчас .. т.е. на 'http: // example.com/blog' – Gags

+0

Hrmm; это потому, что он никогда не работал в первую очередь. '/ blogdetail' соответствует правилу, поэтому он будет повторяться снова и снова. Я отредактировал ответ. – Sumurai8

+0

Работал отлично :) .. большое спасибо – Gags