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
标志结束即可。