我到处寻找可以重写url的htaccess规则:
customer.com/it/public/
到customer.com/it/
我的文件夹结构是这样的:
/customer.com
.htaccess
|-- it
|-- .htaccess
|-- public
| |-- .htaccess
在网站的根目录中,有一个Codeigniter应用程序,在IT
文件夹中,有一个Laravel应用程序。
这是我当前在我的网站根目录中的index.php(重写codeigniter HTACCESS ):
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php/$0 [PT,L]
</IfModule>
以下是我的HTACCESS文件中的规则,该文件位于IT
文件夹(假设重写laravel公共文件夹)的根目录下:
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_URI} !^public/
RewriteRule ^(.*)$ /public/$1 [L]
</IfModule>
以下是公共文件夹中HTACCESS文件中的规则(重写公共文件夹中的index.php ):
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews
</IfModule>
RewriteEngine On
# Redirect Trailing Slashes...
RewriteRule ^(.*)/$ /$1 [L,R=301]
# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
</IfModule>
调试的一部分:
DOCUMENT_ROOT C:/xampp/htdocs
REQUEST_SCHEME http
CONTEXT_PREFIX
CONTEXT_DOCUMENT_ROOT C:/xampp/htdocs
SERVER_ADMIN postmaster@localhost
SCRIPT_FILENAME C:/xampp/htdocs/it/public/index.php
REMOTE_PORT 44461
REDIRECT_URL /it/
GATEWAY_INTERFACE CGI/1.1
SERVER_PROTOCOL HTTP/1.1
REQUEST_METHOD GET
QUERY_STRING
REQUEST_URI /it/
SCRIPT_NAME /it/public/index.php
PHP_SELF /it/public/index.php
REQUEST_TIME_FLOAT 1395338241.106
REQUEST_TIME 1395338241
发布于 2014-03-21 01:12:11
RewriteRule ^(.*)$ /public/$1 [L]
此行生成一个绝对替换,因此mod_rewrite不会添加回目录前缀(在本例中为“it”)。尝试将该规则替换为以下内容:
RewriteRule ^(.*)$ public/$1 [L] #relative substitution
或者用这个:
RewriteRule ^(.*)$ /it/public/$1 [L] #absolute substitution including dir prefix
PS:你并不是真的想把"/it/public/“重写成"/it/",相反。
编辑:另外,删除“重定向尾部斜杠”规则。
https://stackoverflow.com/questions/22537927
复制相似问题