Apache Url重写不起作用;404错误且没有url更改

Apache Url重写不起作用;404错误且没有url更改,apache,mod-rewrite,Apache,Mod Rewrite,我正在一个网站上工作,我想在那里的网址 www.example.com/directory1/states/california.php 指 www.example.com/directory1/california www.example.com/directory1/miami 城市网页也有类似的url更改: www.example.com/directory1/cities/miami.php 应该指向 www.example.com/direc

我正在一个网站上工作,我想在那里的网址

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

    www.example.com/directory1/california
  www.example.com/directory1/miami
城市网页也有类似的url更改:

   www.example.com/directory1/cities/miami.php
应该指向

    www.example.com/directory1/california
  www.example.com/directory1/miami
我正在使用access文件中的以下规则更改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找不到。使用测试时,输出url总是正确的。我的规则怎么了?有没有办法测试mod_rewrite是如何工作的

某些服务器配置要求您在.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]

是的,我打开了我的重写引擎,我尝试添加反斜杠,但没有效果:/Maybe尝试添加一个规则,以查看该.htaccess文件中是否正在处理任何规则。可能模块没有安装,或者上面有一个文件阻止它。我最喜欢的是:RewriteRule^.*$/[F,L]如果它起作用,那么在每个符合该规则的URL上都会出现禁止的错误页面。