2013-07-04 4 views
0

Я хочу переписать параметр запроса к слешами отделившийся с помощью .htaccess.htaccess редирект показывает внутреннюю ошибку сервера

Пример Rewrite

http:www.site.com/user/comfirm/index.php?confirm=x22xx22xxx 

Для

http:www.site.com/user/comfirm/x22xx22xxx 

Для этого я пытаюсь это путь

RewriteRule ^/user/confirm/([^A-Za-z0-9])$ /user/confirm/index.php?confirm=$1 [L, QSA] 

Но он показывает внутреннюю ошибку сервера.

Также попытался с некоторыми изменениями, как изменение /user/ на user/ и вот так.

RewriteRule ^/user/confirm/(.*)/$ /user/confirm/index.php?confirm=$1 [L] 

Но показывает сообщение об ошибке 404

Пожалуйста, смотрите и подсказать возможный способ сделать это.

ответ

0

Я решил эту проблему путем удаления этого правила перезаписи из корневой .htaccess

RewriteRule ^/user/confirm/([^A-Za-z0-9])$ /user/confirm/index.php?confirm=$1 [L,QSA] 

И помещая другой .htaccess файл в каталоге confirm, чтобы скрыть индекс .php и обрабатывать параметр запроса со следующими кодами.

Options +FollowSymlinks 
<IfModule mod_rewrite.c> 
RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ index.php?confirm=$1 [L] 
</IfModule> 

И теперь его работа. Надеюсь, что это тоже поможет другим.

1

Там две проблемы:

Удалить пространство в ваших флагов: [L, QSA]

Узор также неправильно, попробуйте следующее:

RewriteRule ^/user/confirm/([^A-Za-z0-9])$ /user/confirm/index.php?confirm=$1 [L,QSA] 

Один простой способ отладки проблем htaccess - проверка журналов веб-сервера (Apache), usuallu error_log или errors.log в зависимости от вашей настройки.

+0

Его все еще показывает ошибку 404 –

+0

, которая будет ошибкой переписывания, я указал только на свои ошибки :) – Andrew

+0

возможно, ваше регулярное выражение: ([^ A-Za-z0-9]) НЕ соответствует a-z0-9 из-за отрицания^попробуйте это: ([A-Za-z0-9]) – Andrew

1

Попробуйте этот код:

Options +FollowSymLinks -MultiViews 
# Turn mod_rewrite on 
RewriteEngine On 
RewriteBase/

RewriteRule ^user/confirm/([^/]+)/?$ /user/confirm/index.php?confirm=$1 [L,NC,QSA] 

Если он не работает, то, пожалуйста, напишите Ваше полное .htaccess в вашем вопросе.

EDIT: Предложенное .htaccess:

Options +FollowSymlinks-MultiViews 
<IfModule mod_rewrite.c> 
RewriteEngine on 
RewriteBase/

RewriteRule ^user/confirm/([^/]+)/?$ /user/confirm/index.php?confirm=$1 [L,QSA,NC] 

RewriteRule ^sitemap\.xml$ sitemap.php [L] 

RewriteRule ^rss/(.+?)\.xml$ rss/$1.php [L] 

RewriteRule ^([^/]*)/(.+?\.html)$ /software/?pflink=$1&pagelink=$2 [L,QSA,NC] 
</IfModule> 
+0

, все еще получая внутреннюю ошибку сервера –

+0

Покажите ошибку из error.log и, как я уже говорил, отправьте свой полный .htaccess в ваш вопрос' – anubhava

+0

как я могу увидеть ошибку из журнала, и я теперь не об этом. –

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