htaccessredirect除了两个文件的一切

有谁知道如何编写一个.htaccess文件,将所有请求的所有stream量redirect到index.php,除了两个文件。

而在这个过程中,也可以将没有“www”的任何请求redirect到“www”

另外,我可以使根目录中的.htaccess成为唯一使用的主要文件,随后,读取等。因此,我不必将.htaccess文件放在每个子文件夹中。

而且,我是否应该把[NC]放在这些指令的最后?

尝试:

DirectoryIndex index.php RewriteEngine on RewriteCond %{HTTP_HOST} ^example.com$ RewriteCond %{REQUEST_URI} ! ^/robots\.txt$ RewriteCond %{REQUEST_URI} ! ^/googlestuff\.html$ RewriteRule ^/?$ "http\:\/\/www\.example\.com\/" [R=301,L] 

但它没有工作?

确保在虚拟主机的webserverconfiguration中没有“ AllowOverride None ”。 尝试设置“ AllowOverride All ”。

例如在debian中,web服务器默认configuration为“ AllowOverride None ”选项,不允许使用.htaccess覆盖设置。

另外,当这些目录中的设置与父文件夹中的设置相同时,不需要将.htaccess放在子目录中。

你是! 需要在正则expression式之前正确,否则apache错误地将它作为自己的参数,并假定它是模式。 规则中的模式本身需要足够通用以匹配所有内容。

 DirectoryIndex index.php RewriteEngine on RewriteCond %{REQUEST_URI} !^/robots\.txt$ RewriteCond %{REQUEST_URI} !^/googlestuff\.html$ RewriteRule ^/?(.+) http://www.example.com/ [R=301,L] 

如果要强制请求在主机名中包含www,则必须单独执行此操作,并且这是您要使用NC标记的位置:

 RewriteCond %{HTTP_HOST} ^example.com$ [NC] RewriteRule ^(.*)$ http://www.example.com/$1 [R=301,L]