2012-07-26 59 views
0

我工作的一个网站,我想要的网址上网址重写无法正常工作; 404错误,并没有改变URL

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] 

然而,没有在地址栏的变化,我总是得到没有找到404。当我使用htaccess checker进行测试时,输出url总是正确的。我的规则有什么问题?有没有办法测试mod_rewrite如何运行?

回答

1

某些服务器配置要求您在.htaccess文件中打开重写引擎。就在顶部:

RewriteEngine on 

我也知道该文件的路径开始有些服务器CONFIGS用/(由于已被上请求运行其他重写规则),这样也许能够为实现这一目标是/结束那里的规则:

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] 
+0

是的,我有我RewriteEngine叙述,我试图添加的反斜杠,但无济于事:/ – 2012-07-26 17:57:04

+0

也许尝试添加规则,看是否有规则,在被处理。 htaccess文件。也许模块没有安装,或者有更高的文件阻止它。我最喜欢的是这样的: RewriteRule ^。* $/[F,L] 如果它工作,你会得到Forbidden错误页上每个URL击中该规则。 – 2012-07-26 21:47:24