/ / .htaccess Перезапис без index.php - apache, .htaccess, мод-перезапису, url-rewriting

.htaccess Перезапис без index.php - apache, .htaccess, мод-перезапису, url-rewriting

У мене є 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]