0

URLが必要なWebサイトで作業しています

    www.example.com/directory1/states/california.php 

指す

    www.example.com/directory1/california

また、都市ページの同様のURL変更:

   www.example.com/directory1/cities/miami.php

を指す必要があります

  www.example.com/directory1/miami

アクセスファイルで次のルールを使用してURLを変更しています。

RewriteRule ^directory1/(alabama|alaska|arizona|arkansas|california|colorado|connecticut|delaware|florida|georgia|guam|hawaii|idaho|illinois|indiana|iowa|kansas|kentucky|louisiana|maine|maryland|massachusetts|michigan|minnesota|mississippi|missouri|montana|nationwide|nebraska|nevada|new_hampshire|new_jersey|new_mexico|new_york|north_carolina|north_dakota|ohio|oklahoma|oregon|pennsylvania|rhode_island|south_carolina|south_dakota|tennesee|texas|us_virgin_islands|utah|vermont|virginia|washington|west_virigina|wisconsin|wyoming)$ /directory1/states/$1.php [L]

RewriteRule ^directory1/(.*)$ /directory1/cities/$1.php [L]

ただし、URLバーには何も変更がなく、常に404が見つかりません。htaccessチェッカーでテストしたところ、出力URLは常に正しいです。私のルールの何が問題になっていますか?mod_rewriteがどのように/機能しているかをテストする方法はありますか?

4

1 に答える 1

1

一部のサーバー構成では、.htaccessファイルで書き換えエンジンをオンにする必要があります。右上:

RewriteEngine on

また、ファイルパスが/で開始/終了するサーバー構成もいくつか知っています(リクエストですでに実行されている他の書き換えルールのため)ので、おそらくそれをルールに含めることができます:

RewriteRule ^/?directory1/(alabama|alaska|arizona|arkansas|california|colorado|connecticut|delaware|florida|georgia|guam|hawaii|idaho|illinois|indiana|iowa|kansas|kentucky|louisiana|maine|maryland|massachusetts|michigan|minnesota|mississippi|missouri|montana|nationwide|nebraska|nevada|new_hampshire|new_jersey|new_mexico|new_york|north_carolina|north_dakota|ohio|oklahoma|oregon|pennsylvania|rhode_island|south_carolina|south_dakota|tennesee|texas|us_virgin_islands|utah|vermont|virginia|washington|west_virigina|wisconsin|wyoming)/?$ /directory1/states/$1.php [L]

RewriteRule ^/?directory1/(.*)/?$ /directory1/cities/$1.php [L]
于 2012-07-26T17:55:20.730 に答える