如何让mod_rewrite重写所有内容?

时间:2015-12-11 19:08:33

标签: php apache .htaccess mod-rewrite

我一直试图让我的.htaccess文件重写所有网址。

然而,无论我做什么,我都无法忽略现有目录。而且,我的意思是,表现得好像他们不存在。

例如,假设我有以下文件结构:

/
    dir1
        file1.php
    dir2
        file2.php
    .htaccess

并且假设我想将所有流量重定向到dir1/file1.php?url=path

如果路径是现有目录,这对我不起作用。

例如,如果我导航到url/path/stuff/dir2,那么"重定向"可行,但地址栏中的网址由于某种不可思议的原因而变为url/path/stuff/dir2/?url=dir2

这是我的.htaccess

Options -MultiViews

Options -Indexes

Options +FollowSymLinks

# so navigating to a url with a trailing slash won't cause problems
DirectorySlash Off

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f

RewriteRule ^(.*)$ dir1/file1.php?url=$1 [QSA,L]

1 个答案:

答案 0 :(得分:0)

您(更新).htaccess说:IF(它不是现有文件)然后{重写URL}。好像你想要

RewriteEngine on
RewriteCond %{REQUEST_URI} !dir1/file1.php
RewriteRule ^(.*)$ dir1/file1.php?url=$1 [QSA,L]

在这种情况下,RewriteCond可以防止无限循环。 RewriteRule只应用一次。重写模块将继续循环通过所有规则,直到循环不会导致更改为URI。