【问题标题】:how to redirect to a subfolder and then rewrite subfolder link to root in htaccess?如何重定向到子文件夹,然后将子文件夹链接重写到 htaccess 中的根目录?
【发布时间】:2016-05-20 03:43:53
【问题描述】:

如果这个问题是重复的,我很抱歉,但是我在网上查找的所有内容都让我很困惑,所以我再次发布这个问题,说明我的需求。

由于我希望我的网站结构干净,我想将内容与配置分开,所以我将所有页面放在/app 文件夹中(很像 rails 应用程序)。网站的结构大概是这样的:

.
├── app
│   ├── index.php
│   └── products
│       └── index.php
├── configs
└── layouts

我发现了如何通过这种方式将根目录重定向.htaccess 中的/app 文件夹:

RewriteEngine on
RewriteRule ^$ /app [L]

当我访问服务器时,apache 会重定向到 /app 文件夹,并且 url 是:localhost/app

我想重写网址以删除/app。例如,当我访问 /products/ 文件夹时,我不希望 url 看起来像这样:localhost/app/products/ 我希望它看起来像这样:localhost/products/

我在 google 上搜索了解决方案,我发现它与 worpress 非常相似,您只需添加:

RewriteEngine on
RewriteRule ^$ /app [L]    
RewriteRule %{REQUEST_URI} ^/app/.*
RewriteRule ^(.*)$ app/$1 [L]

但是这不起作用,apache返回500 internal server error

我试过了:

RewriteEngine on
RewriteRule ^$ /app [L]  
RewriteRule %{REQUEST_URI} !^/app/
RewriteRule ^(.*)$ app/$1 [L]

RewriteEngine on
RewriteRule ^$ /app [L]  
RewriteRule %{REQUEST_URI} !^/app/.*
RewriteRule ^(.*)$ app/$1 [L]

两者都返回500 internal server error

我也试过了:

RewriteEngine on
RewriteRule ^$ /app [L]  
RewriteCond %{REQUEST_URI} !^/app/
RewriteRule ^(.*)$ app/$1 [L]

/app 仍在网址中!!

我该怎么做?

【问题讨论】:

    标签: php apache .htaccess redirect mod-rewrite


    【解决方案1】:

    试试:

     RewriteEngine on
    
    #--Redirect /app/foobar to /foobar--#
    RewriteCond %{THE_REQUEST} /app/([^\s]+) [NC]
    RewriteRule ^ /%1 [NC,L,R]
    #--Rewrite /foobar to /app/foobar--#
    RewriteCond %{REQUEST_URI} !^/app
    RewriteRule ^(.*)$ /app/$1 [NC,L,QSA]
    

    【讨论】:

      猜你喜欢
      • 2020-01-08
      • 2017-01-29
      • 2021-09-03
      • 2011-01-19
      • 1970-01-01
      • 2011-01-14
      • 2012-10-23
      • 2015-10-06
      相关资源
      最近更新 更多