2012-06-18 2 views
0

У меня есть список состояний и файл php, в котором будет указан весь город штата. Принимая параметр URL как /common.php/?state=Texas и перечислить все города. После щелчка по городу он принимает адрес /common.php/?city=Alanreed&state_code=TX и отображает информацию о городе..htaccess для чистого URL

Я хочу форматировать URL с помощью .htaccess, как для государств, он должен принять state_name.htmleg. Texas.html и для названия города либо Texas/sugar_land.html или tx/sugar_land.html Как я могу добиться этого с помощью PHP и .htaccess?

ответ

1
RewriteEngine On 
RewriteRule ^(.*)/(.*).html$ common.php/?state=$1&city=$2 [L] 
RewriteCond %{REQUEST_URI} !^(.*/)?index\.html$ [NC] 
RewriteRule ^(.*).html$ common.php/?state=$1 [L] 

\w{2} означает 2 символа слова, поэтому его переписать в виде кода состояния, то второе правило переписать полные названия штатов и третий переписать состояния.

+0

После этого мой индексный файл не открывается. Просьба помочь, у меня нет большого знания о .htaccess. – Vins

+0

Включен ли режим mod rewrite? И что вы не открываете, есть ли ошибка? – Jeroen

+0

Да, он включен. Раньше я написал правило для выполнения .html файлов как .php AddType application/x-httpd-php .php .htm .html, который работает нормально. После добавления этих 2 правил его выдача серверной ошибки. – Vins

0

Попробуйте что-нибудь вроде этого:

<IfModule mod_rewrite.c> 
    RewriteEngine On 

    RewriteRule ^([a-z]{2})\.[hH][tT][mM][lL]?$ common\.php\?state_code=$1 
    RewriteRule ^([a-zA-Z]+)\.[hH][tT][mM][lL]?$ common\.php\?state=$1 

    RewriteRule ^([a-z]{2})/([_a-zA-Z]+)\.[hH][tT][mM][lL]?$ common\.php\?state_code=$1&city=$2 
    RewriteRule ^([a-zA-Z]+)/([_a-zA-Z]+)\.[hH][tT][mM][lL]?$ common\.php\?state=$1&city=$2 
</IfModule> 

Следует также работать tx.htm Это предполагает, что ваш Апач включен mod_rewrite.

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