我正在尝试为这种情况重写一个htaccess url:
www.website.com/index.php/admin/something => www.website.com/admin/something
www.website.com/index.php/website/something => www.website.com/something
www.website.com/index.php/login/something => www.website.com/login/something
注意:“某事”可以是“something1 / something2 / something3”或“something1 / something2”或“something”
我可以用“
”剪切“index.php”RewriteEngine on
RewriteCond $1 !^(index\.php|resources|robots\.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L,QSA]
但是我找不到一种方法只删除“website /”而不是“admin /”和“login /”留下其余的url。
答案 0 :(得分:0)
如果采用这种方法,您可能必须指定不应映射到“网站”控制器的每个可能的输入引用,并将其重新映射到index.php / $ 1并处理每个其他请求,就像它是网站的方法一样控制器,将其映射到index.php / website / $ 1
下面的内容会将以admin或login开头的任何内容映射到index.php以及其他所有内容到网站控制器:
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} ^admin.*
RewriteCond %{REQUEST_URI} ^login.*
RewriteRule ^(.*)$ index.php?/$1 [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI}
RewriteRule ^(.*)$ /index.php?/website/$1 [L]