Во-первых, чего я пытаюсь достичь: Я тестирую под базой http://example.com/subdir, и здесь находятся все подпапки, index.php и .htaccess.htaccess: относительные пути не работают должным образом
У меня есть 3 группы правил, как показано в .htaccess (дополнительные правила удалены):
<IfModule mod_rewrite.c>
Options +FollowSymlinks
RewriteEngine on
# Convert item/edit/xx -> index.php?p=edit&id=xx
# Convert item/remove/xx -> index.php?p=remove&id=xx
#RewriteCond %{REQUEST_URI} ^/item [NC]
#RewriteCond %{QUERY_STRING} ^id=([0-9]+)$ [NC]
RewriteRule ^item/([a-z]+)/([0-9]+)$ index.php?p=$1&id=$2 [NC,L]
# Convert category/yyyy -> customer/pagination.php?category=yyyy
#RewriteCond %{QUERY_STRING} category=([a-zA-Z\s]+)$
RewriteRule ^customer/category/([a-zA-Z\s]+)$ customer/pagination.php?category=$1 [NC,L]
# Convert action/about -> index.php?p=about
# Convert action/terms -> index.php?p=terms
#RewriteCond %{QUERY_STRING} p=([a-z]+)$
RewriteRule ^action/([a-z]+)$ index.php?p=$1 [NC,L]
</IfModule>
Первая проблема, которую я столкнулся прошел RewriteCond не работает (давая путь не найден), так комментирует на данный момент. RewriteRule работает отлично с абсолютным путем (например, RewriteRule^action/([az] +) $ http://example.com/subdir/index.php?p= $ 1 [NC, L]), однако это заставляет браузер отображать реальный URL, поэтому я пытаюсь заставить его работать с относительным пути. Моя проблема заключается в том, что после первого перенаправления первая часть ссылки слева добавляется в путь, то есть http://example.com/subdir становится http://example.com/subdir/action после нажатия ссылки/о ссылке. Определение RewriteBase или добавочных косых черт к URL-адресам только ухудшает ситуацию. Буду благодарен орлиному эксперту, который может определить причину моей проблемы.
Я не совсем понимаю вторую часть вашего вопроса. Каким будет URL-адрес примера, который вызывает ошибку, какой путь вы хотите перенаправить, и на какой путь он действительно перенаправлен? – Anonymous
Пример URL-адреса: http://example.com/subdir/action/about. При нажатии на нее перенаправляется на правильную страницу «О программе», однако путь для следующего запроса становится http://example.com/subdir/action/. Поэтому, когда вы нажимаете, скажем, ссылку action/terms - результат url = http: //example.com/subdir/action/action/terms. Обратите внимание на добавленную дополнительную папку «действие» в путь (мне нужно перенаправить на http://example.com/subdir/index.php?p=terms). Все ссылки относительны BTW, например. Действие/о. Спасибо. – user2097141