是否有可能让htaccess运行目录,直到find一个,并保持正常的get完好? 例如:
/foo/bar/foobar/test/something?foo=bar&bar=foo
脚本在哪里是/foo/bar/foobar.php和foobar.php有:
array(2) [foo] = bar, [bar] = foo
和testing/东西是通过某处例如在其他名称的path/ PARAMS。
我得到这个,但它不处理得很好:
RewriteEngine On RewriteBase / RewriteCond %{REQUEST_FILENAME} -f [OR] RewriteCond %{REQUEST_FILENAME} -l RewriteRule ^ - [L] RewriteCond %{DOCUMENT_ROOT}/$1/$2.php !-f RewriteCond %{QUERY_STRING} ^(?:param=)?(.*)$ RewriteRule ^(.*?)/([^/]+)/?$ $1/?param=$2/%1 [L] RewriteCond %{DOCUMENT_ROOT}/$1.php -f RewriteRule ^(.*?)/?$ $1.php [L]
提前致谢
编辑
目前我遇到以下问题:
我有一个名为/ page.php的页面,但是这个page.php检查某些“选项”,比如/ page / homepage。 这工作,但是当我添加/页/主页?foo =酒吧目前的htaccess使“主页/ foo =酒吧”,而不是一个单独的get。 我爆炸的参数得到/并给我以下几点:
array (size=3) 0 => string 'page' (length=4) 1 => string 'homepage' (length=8) 2 => string 'foo=bar' (length=7)
foo = bar不应该在那里,应该是$ _GET ['foo']或者任何名字,如果更多,更多的命名后面。 例如:
array (size=3) params => string 'page/homepage' (length=13) foo => string 'bar' (length=3) bar => string 'foo' (length=3)
当前的htaccess将第一个获取作为“参数”的一部分。
EDIT2
我想达到以下内容:
使用htaccess转到页面/ page.php它应该看起来像/ page / homepage?background = someColor
在homepage.php脚本中,我想获取“主页”作为页面variables,并获得背景应该工作。
试试这个代码:
RewriteEngine on RewriteBase / # If the request is for a valid file RewriteCond %{REQUEST_FILENAME} -f [OR] # If the request is for a valid link RewriteCond %{REQUEST_FILENAME} -l # don't do anything RewriteRule ^ - [L] # if current ${REQUEST_URI}.php is not a file then # forward to the parent directory of current REQUEST_URI RewriteCond %{DOCUMENT_ROOT}/$1/$2.php !-f RewriteRule ^(.*?)/([^/]+)/?$ $1/?param[]=$2 [L,QSA] # if current ${REQUEST_URI}.php is a valid file then # load it be removing optional trailing slash RewriteCond %{DOCUMENT_ROOT}/$1.php -f RewriteRule ^(.*?)/?$ $1.php [L]