我的任务是实现
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的情况下做到这一点。有什么建议?
答案 0 :(得分:2)
将规则更改为:
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,图像文件使用绝对路径而不是相对路径。这意味着他们的路径应该以{{1}}或http://
开头。
答案 1 :(得分:1)
为什么不将所有内容传递给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']