Mod Rewrite在错误的路径上加载index.php


Mod Rewrite load index.php on bad path

这些是我正在使用的重写规则。在这一点上,我试图强制坏的url加载index.php。html标记<base href="/directory-name/" />位于index.php的顶部,因此我的css、图像和其他资产正在正确加载。

Options -Indexes +FollowSymLinks
RewriteEngine On 
RewriteCond ${REQUEST_URI} ^.+$
RewriteCond %{REQUEST_FILENAME} '.(gif|jpe?g|png|js|css|swf|php|ico|txt|pdf|xml)$ [OR]
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d [OR]
RewriteCond %{REQUEST_FILENAME} -l
RewriteRule ^ - [L]
RewriteRule ^(.*)/(.*)/(.*) /index.php?x=$1&y=$2&z=$3 [L]
RewriteRule ^(.*)/(.*) /index.php?x=$1&y=$2 [L]
RewriteRule ^(.*) /index.php?x=$1 [L]

Url示例:

www.domain.com/directory-name/
www.domain.com/directory-name/index.php
www.domain.com/directory-name/index.php/arg1/arg2/arg3
www.domain.com/directory-name/anything-here
www.domain.com/directory-name/anything-here/arg1/arg2/arg3

前3个url示例运行良好,并加载index.php。但是第4个和第5个url失败,并将我转储回存在examplep索引的html root/。我假设上一次url重写失败是因为index.php位于根目录之外的子目录中?

我该怎么解决?即使路径中有其他内容,我该如何强制url加载www.domain.com/directory-name/index.php

试试这些规则:

RewriteRule ^([^/]+)/([^/]+)/([^/]+)/?$ index.php?x=$1&y=$2&z=$3 [L]
RewriteRule ^([^/]+)/([^/]+)/?$ index.php?x=$1&y=$2 [L]
RewriteRule ^([^/]+)/?$ index.php?x=$1 [L]