Ошибка внутреннего сервера Apache2 RewriteRule 500

70
7

Я пытаюсь переписать мой URL-адрес, а некоторые работают, но другой (который является дополнительным уровнем на уровне каталогов) вызывает ошибку внутреннего внутреннего сервера. Я не знаю, почему это происходит, и по разным причинам я не могу включить регистрацию.

Мой файл.htaccess выглядит так:

Options +FollowSymLinks
RewriteEngine On

# Rewrite account/order.php
RewriteRule ^account/order/([a-z0-9]+)/.+$ /account/order.php?order_id=$1 [L]

# Rewrite advertiser.php
RewriteRule ^advertiser/([a-z0-9]+)/.+$ /advertiser.php?advertiser_id=$1 [L]

# Remove .php from URL
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php

URL-адрес правила rewrite для advertiser.php может выглядеть так: http://domain.com/advertiser/1234

Это прекрасно работает.

Однако мое правило перезаписи для account/order.php не является. Он производит 500 ошибок. URL-адрес может выглядеть так: http://domain.com/account/order/1234

Единственное отличие, которое я вижу, это то, что правило перезаписи имеет в нем другой каталог, который не работает. Что мне не хватает, что может вызвать эту ошибку?

Благодарю!

спросил(а) 2015-07-12T07:19:00+03:00 5 лет, 2 месяца назад
1
Решение
120

Не знаете, почему у вас есть дополнительные .+ в конце шаблонов. Попробуйте этот код:

ErrorDocument 404 default
Options +FollowSymLinks
RewriteEngine On

# Rewrite account/order.php
RewriteRule ^account/order/([a-z0-9]+)/?$ account/order.php?order_id=$1 [L,QSA,NC]

# Rewrite advertiser.php
RewriteRule ^advertiser/([a-z0-9]+)/?$ advertiser.php?advertiser_id=$1 [L,QSA,NC]

# Remove .php from URL
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php [L]

ответил(а) 2015-07-12T07:39:00+03:00 5 лет, 2 месяца назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема