Regex htaccess可访问多个可选参数
我的使命是实现Regex htaccess可访问多个可选参数,regex,.htaccess,mod-rewrite,Regex,.htaccess,Mod Rewrite,我的使命是实现 http://localhost/projectname/media/video 从 http://localhost/projectname/index.php?m=media&cmd=video 而且 http://localhost/projectname/home http://localhost/projectname/index.php?m=home 下面的文件有助于实现我的使命 RewriteRule ^([^/]*)$ /projectname/index.php
http://localhost/projectname/media/video
从
http://localhost/projectname/index.php?m=media&cmd=video
而且
http://localhost/projectname/home
http://localhost/projectname/index.php?m=home
下面的文件有助于实现我的使命
RewriteRule ^([^/]*)$ /projectname/index.php?m=$1
RewriteRule ^([^/]*)/([^/]*)$ /projectname/index.php?m=$1&cmd=$2
问题是,任何外部文件,如javascript和css,都不会被使用
我知道我的选择是把这是htaccess
RewriteRule ^([^/]*)/cmd/([^/]*)$ /projectname/index.php?m=$1&cmd=$2
这将启用http://localhost/projectname/media/cmd/video
我想在没有CMD的情况下完成。有什么建议吗 为什么不将所有内容传递给index.php,然后处理/解析路径,例如
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
然后使用
$_SERVER['PATH_INFO']
$_SERVER['ORIG_PATH_INFO']
$_SERVER['QUERY_STRING']
将规则更改为:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]*)/([^/]*)/?$ projectname/index.php?m=$1&cmd=$2 [L,QSA]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]*)/?$ projectname/index.php?m=$1 [L,QSA]
并确保您的js、css、图像文件使用的是绝对路径,而不是相对路径。这意味着他们的路径应该以
http://
或/
开始,谢谢你的肯定解决了我想要的问题。所以每当有更多参数时,我需要重写条件和新规则?是的,这是正确的,只要确保每个重写规则都以L
标志结束即可。