У мене є URL-адреса з структурою http://localhost/slugone/dynamicslug?query=00000
, який я намагаюся переписати http://localhost/slugone/dynamicslug/00000
.
Мені вдалося отримати .htaccess, щоб визнати це RewriteRule
RewriteRule ^slugone/(.*)/(.*)$ /slugone/$1?query=$2 [L,R=301]
Але це не робить того, що мені це потрібно, а не маскую /slugone/dynamicslug/00000
бути /slugone/dynamicslug?query=00000
, замість цього переспрямовує досить URL-адресу до URL-адреси з параметрами запиту.
/dynamicslug/
це зловмисник, який використовується для показу конкретного продукту на сторінці, а також ?query=00000
використовується для вибору варіанту цього продукту, тому я не можу явним чином використовувати /dynamicslug/
в моєму переписаному правилі теж.
Пошук SO не дав мені ніяких результатів, оскільки всі питання, які я можу знайти, використовують index.php
в їх переписанні, якого я не є.
Відповіді:
3 для відповіді № 1Ви повинні змінити ваш RewriteRule:
RewriteCond %{QUERY_STRING} ^query=([0-9]+)$
RewriteRule ^slugone/([^/]+)$ /slugone/$1/%1? [L,R=301]
EDIT:
Якщо ви хочете, щоб він поводився як хороша URL-адреса, ви повинні видалити перенаправлення лише з первинної RewriteRule:
RewriteRule ^slugone/(.*)/(.*)$ /slugone/$1?query=$2 [L]