嘿,伙计们,我想说的是:
我想要这样做,这样我就可以将所有url变量和值转换为文件夹,所有这些都有一个规则。我本来想找个办法这样做的:
www.example.com/var1/val1/var2/val2/varN/valN
在一个理想的世界里,我可以重写它:
www.example.com/index.php?var1=val1&var2=val2&varN=valN
但我也很乐意做这样的事:
www.example.com/index.php?path=/var1/val1/var2/val2/varN/valN
然后在PHP中将它们工作到数组或结构中。在我的例子中,一切都通过index.php工作,所以这是一个常量。
有办法这样做吗?我在谷歌上找不到任何东西,显然我自己也想不出来!
谢谢各位:-)
发布于 2009-09-25 16:23:39
这是从我的主要apache中的<Directory>指令中逐字复制的内容。我一直无法做到这一点,但也应该在.htaccess中工作(可能没有<Directory>部件)。
<Directory /path/to/document/root/>
RewriteEngine On
RewriteRule ^(.*)$ index.php?path=$1 [QSA]
</Directory>URL http://www.any.com/foo/bar/baz/spam/eggs应该变成http://www.any.com/index.php?path=/foo/bar/baz/spam/eggs
发布于 2009-09-25 19:00:18
试试这条规则:
RewriteEngine on
RewriteRule !^index\.php$ index.php?path=%{REQUEST_URI} [L]它将重写除index.php以外的任何请求到index.php。
如果要排除现有文件和目录,请将这些RewriteCond指令添加到您的规则中:
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule !^index\.php$ index.php?path=%{REQUEST_URI} [L]这是前一种格式的一条规则,除了参数有表单var[]之外
RewriteRule ^([^/]+)/([^/]+)(.*)$ /$3?$1[]=$2 [N,QSA]发布于 2009-09-25 21:21:10
秋葵,我真的很喜欢这个解决方案,它工作得很好:
RewriteRule ^(^/+)/(^/+)(.*)$ /$3?$1[]=$2N,QSA
我有一种感觉,我需要把像!(js\css)这样的东西放在里面,以排除那些文件夹,但我不知道在哪里,我尝试了几个地方,但没有结果。你对此有什么调整吗?再次感谢凶手的解决方案!
编辑:我发现了,或者说找到了!我把这个放在重写规则之前:
RewriteCond %{REQUEST_FILENAME} !^(.+).css$
RewriteCond %{REQUEST_FILENAME} !^(.+).js$
最后,它看起来像这样,工作非常完美:
RewriteCond %{REQUEST_FILENAME} !^(.+).css$
RewriteCond %{REQUEST_FILENAME} !^(.+).js$
RewriteRule ^(^/+)/(^/+)(.*)$ /$3?$1[]=$2N,QSA
这个解决方案中我最喜欢的一点是我可以传递url数组,因此:
www.any.com/var1/val1/var1/val2/
实际创建
$var1=数组(“val1”,"val2");
https://stackoverflow.com/questions/1478176
复制相似问题