.htaccess 规则没有';无法处理现有文件
我想为一个子域创建一个规则,该规则重定向到根目录上的文件。如果规则不匹配,则应将用户重定向到原始域 子域和域都链接到同一目录。但是如果给定请求URI的第一个子目录与目录中的文件名匹配,则我的规则似乎与请求URI不匹配 信息:.htaccess 规则没有';无法处理现有文件,.htaccess,mod-rewrite,redirect,.htaccess,Mod Rewrite,Redirect,我想为一个子域创建一个规则,该规则重定向到根目录上的文件。如果规则不匹配,则应将用户重定向到原始域 子域和域都链接到同一目录。但是如果给定请求URI的第一个子目录与目录中的文件名匹配,则我的规则似乎与请求URI不匹配 信息:http://sub.domain.tld -->根目录http://domain.tld -->根目录文件test.php存在于根目录中,其内容为:print\u r($\u SERVER['QUERY\u STRING']) RewriteEngine On Rewrit
- http://sub.domain.tld -->根目录
- http://domain.tld -->根目录
- 文件test.php存在于根目录中,其内容为:print\u r($\u SERVER['QUERY\u STRING'])
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^sub\. [NC]
RewriteCond %{REQUEST_URI} ^/([a-z]+)/ [NC]
RewriteRule ^test/ http://domain.tld/ [L,R=301]
RewriteRule ^([a-z]+)/(.*)$ test.php?dir=$1&data=$2 [L]
php输出“dir=xyz&data=something”
但如果我使用,我只会得到一张空白页。但这也应该输出“dir=test&data=something”
我犯了什么错?还有可能优化我的规则吗?明白了!我不得不停用默认激活的MultiView。“多视图”用于调用不带扩展名的文件。因此,将被重写为file.EXT(文件以其扩展名存储在服务器上) 如果调用存储在服务器上的文件,我的服务器将请求URI修改为/file.EXT/subdir/subfile.html 示例:test.php是一个有效文件。-->请求uri:/test.php/something 添加到您的htaccess文件:
Options -MultiViews
停用它并使其工作 第三条规则应该在那里吗?(RewriteRule^test/…)是的,我试图捕获请求uri中的文件名,因为第二个RewriteRule不匹配。但这是我为解决这个问题而添加的第一条重写规则,仍然没有成功…属于serverfault。这不是一个编程问题,所以这里不讨论这个问题。