【问题标题】:Merge two .htaccess files from two projects into one将两个项目中的两个 .htaccess 文件合并为一个
【发布时间】:2012-08-03 05:33:20
【问题描述】:

我有一个项目,我必须将其包含在项目中。 所以..项目A是一个建立在自定义框架之上的网站,它使用这个.htaccess重写规则:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^(.*)$ index.php?url=$1 [PT,L]

第二个项目 B 建立在另一个自定义框架之上,我应该让它看起来像第一个的子文件夹。 所以我把项目B放在一个文件夹“子文件夹”中。项目 B 有自己的 .htaccess,如下所示:

RewriteCond %{REQUEST_FILENAME} !-f

RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^(.*)$ index.php?request=%{REQUEST_URI}&%{QUERY_STRING} [NE,L]

我想将它们合并到一个 .htacess 文件中并告诉 Apache 类似:

如果我们有一个参数 /subfolder 将所有内容重定向到 subfolder/index.php

否则将所有内容重定向到 index.php

任何想法我该怎么做?

【问题讨论】:

  • 当我尝试保留两个 .htaccess 文件并将第二个文件中的 RewriteBase 更改为 RewriteBase /subfolder 我得到 310 (net::ERR_TOO_MANY_REDIRECTS)

标签: php apache .htaccess mod-rewrite url-rewriting


【解决方案1】:

你应该做的是:

对于第一个项目,这个 htaccess 文件在文档根目录中

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?url=$1 [L]

那么在第二个项目中,这个htaccess文件在subfolder目录下:

RewriteEngine On
RewriteBase /subfolder/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?request=%{REQUEST_URI} [NE,L,QSA]

如果出于某种原因这对您不起作用,我猜一个组合的 htaccess 文件(位于文档根目录中的文件)看起来像这样:

RewriteEngine On

# for 2nd project
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^/?subfolder/(.*)$ /subfolder/index.php?request=$1 [NE,L,QSA]

# for 1st project
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php?url=$1 [L]

可能需要更多调整。

【讨论】:

  • 我试过了,但我在第二个项目的重写规则中忘记了 (.*)$,这搞砸了一切。感谢您的帮助!
猜你喜欢
  • 1970-01-01
  • 2018-09-30
  • 2012-12-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-27
相关资源
最近更新 更多