Apache的重写条件而不是文件的行为
我有基本的htaccess文件(-f!):Apache的重写条件而不是文件的行为
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ rewrite.php?data=$1 [L,QSA]
它将按预期大部分。什么不工作,我想它是这样的:
我有这样的链接,不重写按以下规则:
而且这些URL被没有被改写之一:
http://domain.com/movies http://domain.com/movies/ http://domain.com/movies/fdgdgdgdg
这是正常的行为呢?我该如何解决这个问题,以便唯一的工作网址将结束与movies.php
我认为这是一个multiviews问题。与
停用多点视图Options -MultiViews
就是这样!你能详细说一下这个选项吗?为什么这个选项在Linux共享主机上默认启用,但不是synology nas?似乎奇怪的是,它会在默认情况下在任何地方启用... – DominicM
不知道为什么它由默认启用apache(不只是你的主机)。这是我在使用mod_rewrite时禁用的第一件事。 MultiViews的功能是当找不到文件时,查看是否有文件“接近”。因此,对于'/ movies'的请求,MultiViews会发现有一个基本名与请求相同的文件,所以它会提供'/ movies.php'。这是Content Negotiation如何工作的简短版本。更多信息请见http://httpd.apache.org/docs/2.2/content-negotiation.html – Gerben
这很奇怪。你能举一个重写_does_工作的URL的例子吗?另外,您在哪些网址无效的情况下获得了什么? 404错误? –
根据你的规则集,这个:http:// domain.com/movies/fdgdgdgdg被静默映射,例如:http://domain.com/rewrite.php?data =/movies/fdgdgdgdg',例如。 ¿你确定这就是你想要的吗?如果没有,请给出一些你想要的传入和映射URL的例子,从http:// domain.com/movies.php映射URL的例子开始。 –
下面的答案解决我的问题,谢谢你试图帮助! – DominicM