Я немного запутался, хотя, мне нужно, чтобы изменить все ссылки в моем коде http://example.com/items/itemsname и использовать перезапись, чтобы перевести его на http://example.com/item.php?act=view&id=192?
Вы хотите сделать это, если сможете. Это означает, что у вас нет другого уровня обработки для каждой ссылки, которая будет нажата.
Перевод немного неоднозначный. Например:
/username
->/feedback.php?id=146
«Имя пользователя» Я предполагаю, что это что-то вроде «САМ», но «идентификатор» является числом. Модуль перезаписи знает ничего об этом сопоставлении, ничего в файле htaccess ничего не знает о том, как карты usernames отображаются в идентификаторы или как отображать имена элементов для идентификаторов. Единственное, что можно сделать, это использовать RewriteMap
, который определен в конфигурации server/vhost, которая обращается к этому сопоставлению.
Что вам лучше делать, это использовать php. Сопоставьте элементы и имена пользователей с сценами item.php
и feedback.php
. Попросите эти сценарии определить идентификатор, основанный на именах. И имеют эти скрипты, проверяя URI запроса, чтобы проверить, был ли запрос для файлов php напрямую, а не поисковыми URL-адресами SEO и при необходимости перенаправлять их.
Единственное, что вы хотите mod_rewrite сделать, это сделать вперед отображение:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond ^item/(.*)$ /item.php?act=view&name=$1 [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond ^(.*)$ /feedback.php?name=$1 [L]
Здесь вы бы искать для параметра «name
», карта тех, с идентификаторов, что вам нужно, а затем продолжить нормально ,
RewriteCond должны быть RewriteRule в е я думаю, спасибо за подробный ответ! – Athanatos
@ Атанатос, это мое плохое, это была опечатка, спасибо за то, что заметили это;) – Prix