首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将“/it/public/”重写为“/it/”

将“/it/public/”重写为“/it/”
EN

Stack Overflow用户
提问于 2014-03-20 23:38:06
回答 1查看 265关注 0票数 1

我到处寻找可以重写url的htaccess规则:

customer.com/it/public/customer.com/it/

我的文件夹结构是这样的:

代码语言:javascript
运行
复制
/customer.com
   .htaccess
    |-- it
        |-- .htaccess
        |-- public
        |   |-- .htaccess

在网站的根目录中,有一个Codeigniter应用程序,在IT文件夹中,有一个Laravel应用程序。

这是我当前在我的网站根目录中的index.php(重写codeigniter HTACCESS ):

代码语言:javascript
运行
复制
<IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule .* index.php/$0 [PT,L]
</IfModule>

以下是我的HTACCESS文件中的规则,该文件位于IT文件夹(假设重写laravel公共文件夹)的根目录下:

代码语言:javascript
运行
复制
<IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteCond %{REQUEST_URI} !^public/
    RewriteRule ^(.*)$ /public/$1 [L]
</IfModule>

以下是公共文件夹中HTACCESS文件中的规则(重写公共文件夹中的index.php ):

代码语言:javascript
运行
复制
<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>

调试的一部分:

代码语言:javascript
运行
复制
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
EN

回答 1

Stack Overflow用户

发布于 2014-03-21 01:12:11

代码语言:javascript
运行
复制
RewriteRule ^(.*)$ /public/$1 [L]

此行生成一个绝对替换,因此mod_rewrite不会添加回目录前缀(在本例中为“it”)。尝试将该规则替换为以下内容:

代码语言:javascript
运行
复制
RewriteRule ^(.*)$ public/$1 [L] #relative substitution

或者用这个:

代码语言:javascript
运行
复制
RewriteRule ^(.*)$ /it/public/$1 [L] #absolute substitution including dir prefix

PS:你并不是真的想把"/it/public/“重写成"/it/",相反。

编辑:另外,删除“重定向尾部斜杠”规则。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22537927

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档