如何删除部分URI /将不存在的目录重定向到现有目录而不更改URI

时间:2015-01-16 07:17:07

标签: apache .htaccess mod-rewrite

我写了7个网址:

http://www.example.com/TERMS/file

我想要的是:

http://www.example.com/file

问题是:

  • 文件不在我的主目录中,因此它是一个不存在的路径,导致错误:404当我尝试使用mod_rewrite正常重写时
  • 我使用以下方法关闭了文件扩展名:

    > RewriteCond %{REQUEST_FILENAME} !-d RewriteCond
    > %{REQUEST_FILENAME}\.php -f RewriteRule ^(.*)$ $1.php RewriteCond
    > %{THE_REQUEST} ^[A-Z]+\ /([^/]+/)*[^.#?\ ]+\.php([#?][^\ ]*)?\ HTTP/
    > RewriteRule ^(([^/]+/)*[^.]+)\.php /$1 [R=301,L]
    

我认为这与我尝试的重写造成了一些冲突。

如果有帮助,我也有mod_rewrite也强制地址上的www

我曾尝试在这个网站上寻找解决方案并尝试过10种不同的方法,但没有一种方法适用于我。

,不,不,

> RewriteRule ^(.*)/TERMS/(.*) $1/$2

也不是

> (.+)

我的变异工作。

1 个答案:

答案 0 :(得分:1)

您可以在DOCUMENT_ROOT/.htaccess文件中使用此规则遵循其他规则

# If the request is not for a valid directory
RewriteCond %{REQUEST_FILENAME} !-d
# If the request is not for a valid file
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^((?!TERMS/).+)$ /TERMS/$1 [L,NC]