Переписать на «симпатичный URL»?

Это пример того, чего я пытаюсь достичь.

Исходный URL:
http://subdomain.domain.com/company.php?test=TES001

Переписанный URL:
http://subdomain.domain.com/company/AAA001

 Options +FollowSymLinks RewriteEngine on RewriteBase / RewriteRule company/(.*)/(.*)/$ /company.php?$1=$2 ErrorDocument 404 / 

Если вы хотите /company.php?test=AAA001 перенаправить на /company/AAA001 , сделайте следующее:

 RewriteCond %{QUERY_STRING} test=([AZ]+[0-9]+) RewriteRule ^company.php /company/%1? [R] 

Если вы хотите /company/AAA001 быть переписаны как /company.php?test=AAA001 , сделайте следующее:

 RewriteRule company/([AZ]+[0-9]+)$ /company.php?test=$1 

Я думаю, что ваш RewriteRule написан не так, как бы наоборот, это должно быть

 RewriteRule company.php?test=([AZ]+)([0-9]+) /company/AAA$2 

То есть вы сначала даете шаблон, чтобы соответствовать, а затем, что он переписан … однако я не уверен, что вы можете фактически сопоставить параметры GET, подобные этому …

Я не эксперт по mod_rewrite, но:

 RewriteRule company/(.*)/(.*)/$ /company.php?$1=$2 

не должны соответствовать выражениям:

 /company/foo/bar/ 

и отобразить их в:

 /company.php?foo=bar 

У вас есть URL-адрес:

 /company/foo 

Что говорят журналы Apache? Действительно ли ваш .htaccess читается? Вы перезагрузили конфигурацию Apache? (не помню, если это необходимо)

У вас неправильный порядок … сразу после того, как «RewriteRule» является формой URL-адреса, который вы хотите (т. Е. Вашего чистого URL-адреса), с Regex для любого изменения в этом URL-адресе. После этого у вас есть путь к URL, плюс токены Regex для найденных значений (например, $ 1, $ 2 и т. Д.).

 RewriteEngine On RewriteCond %{HTTP_HOST} ^domain.com RewriteRule (.*) http://www.domain.com/$1 [R=301,L] ErrorDocument 400 http://www.domain.com/400 ErrorDocument 403 http://www.domain.com/403 ErrorDocument 404 http://www.domain.com/404 ErrorDocument 500 http://www.domain.com/500 RewriteEngine on RewriteBase / #PAGES RewriteRule ^/company/([AZ]+)([0-9]+)/$ company.php?test=$1&%{QUERY_STRING} [NC,L]