我已经工作了一段时间试图获得
website.com/$1/$2/$3
website.com/$1/$2
生产
website.com/public/index.php?module=$1&controller=$2&action=$3
website.com/public/index.php?controller=$1&action=$2
但我似乎无法让它发挥作用
我正在尝试使用两个.htaccess文件
.htaccess文件位于root /
<IfModule mod_rewrite.c>
Options +FollowSymLinks
Options +Indexes
RewriteEngine on
RewriteRule !^public/ public%{REQUEST_URI} [L]
</IfModule>
.htaccess文件位于root / public /
中<IfModule mod_rewrite.c>
Options +FollowSymLinks
Options +Indexes
RewriteEngine on
RewriteRule ^public/([^/]+)/([^/]+)/([^/]+)(/|)$ public/index.php?module=$1&controller=$2&action=$3
RewriteRule ^public/([^/]+)/([^/]+)(/|)$ public/index.php?controller=$1&action=$2
</IfModule>
我目前已将其重定向到公共/但无法找到更改获取变量的方法
答案 0 :(得分:1)
我自己用根
中的单个.htaccess罚款解决了这个问题RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)\.html$ $1.php [L]
RewriteRule !^public/ public%{REQUEST_URI} [L]
RewriteRule ^(.*)/([style|css|js|javascript|images|img|fonts|swf]+)/(.*)$ public/$2/$3 [L]
RewriteRule ^public/([^/]+)/([^/]+)/([^/]+)/?$ public/index.php?module=$1&controller=$2&action=$3 [L]
RewriteRule ^public/([^/]+)/([^/]+)/?$ public/index.php?controller=$1&action=$2 [L]
编辑:
我已经选择将我的网址移动到我的php,因为htaccess是一种用于此类事情的睡眠,并且If / Else语句令人惊讶......对于那些有类似问题的人来说,新代码是:
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ public/index.php/$1 [L]
RewriteRule ^(.*)/([style|css|js|javascript|images|img|fonts|swf]+)/(.*)$ public/$2/$3 [L]
ErrorDocument 404 /error404
ErrorDocument 403 /error403
答案 1 :(得分:0)
在root / public / .htaccess中,匹配和重写的pathes是相对于root / public的,所以它们不是以public开头的,你不能尝试匹配^ public:
RewriteEngine on
RewriteRule ^([^/]+)/([^/]+)/([^/]+)(/|)$ index.php?module=$1&controller=$2&action=$3
RewriteRule ^([^/]+)/([^/]+)(/|)$ index.php?controller=$1&action=$2
最后的可选斜杠可与/?
匹配:
RewriteRule ^([^/]+)/([^/]+)/([^/]+)/?$ index.php?module=$1&controller=$2&action=$3
答案 2 :(得分:0)
标记<IfModule mod_rewrite.c>
仅适用于apache配置。
在.htaccess文件中,您必须以
开头RewriteEngine On
RewriteBase /
然后是你的条件。