2015-02-26 1 views
1

Хотите переписать URL-адрес и не можете заставить его работать.URL-адрес переменной HTACCESS Переменная переопределения

Пример URL:

http://www.example.com/find/agency.php?agency=33524&name=happy-example 

Ideal, переписаны URL:

http://www.example.com/find/agency/happy-example 

Одна из многих попыток переписывания:

RewriteRule ^/([.]+)/([.]+)$ agency.php?agency=$1&name=$2 

RewriteRule ^/([.]+)/([.]+)/$ agency.php?agency=$1&name=$2 

Даже если удаление агентства "=" переменная не возможна, я все еще не могу заставить этот URL выписать переменные - я подхожу к переписыванию назад?

ответ

0

Попробуйте использовать условие перезаписи, чтобы поймать строку запроса перед выполнением перезаписи.

Например что-то вроде:

RewriteCond %{QUERY_STRING} ^agency=33524&name=([^&]+) 
RewriteRule ^find/agency.php$ find/agency/%1? [R=301] 
0

Есть несколько вещей неправильно с вашим правилом. Однако, чтобы получить такой URL.

http://www.example.com/find/33524/happy-example 

Вам нужно будет использовать переписывание, как показано ниже.

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^find/([^/]+)/([^/]+)/?$ /agency.php?agency=$1&name=$2 [L] 
0

Используйте ленивый модификатор для сопоставления символов (в настоящее время ([.]+) будет соответствовать всем)

RewriteRule ^/([.]+?)/([.]+?)$ agency.php?agency=$1&name=$2 
RewriteRule ^/([.]+?)/([.]+?)/$ agency.php?agency=$1&name=$2 

Вы также можете объединить их в одно правило

RewriteRule ^/([.]+?)/([.]+?)[/]{0,1}$ agency.php?agency=$1&name=$2 

Это не включает в себя какие бы то ни флаги вам понадобится в зависимости от вашего конкретного случая

Смежные вопросы