【问题标题】:htaccess for addon domain and CMShtaccess 用于插件域和 CMS
【发布时间】:2014-09-24 05:18:48
【问题描述】:

.htaccess 正在努力工作。非常感谢常驻专家的任何帮助。

这是文件夹结构(这是一个 CMS,因此文件夹实际上并不存在,所有内容都通过 /index.php?it=foldername 重写);

|--- home
   |--- folderOne
   |--- folderTwo
         |--- subfolderA
         |--- subfolderB
         |--- subfolderC
   |--- folderThree
   |--- etc

我有两个域并想要以下内容:

  • domain.com 应该指向它所做的根文件夹(主目录),标准 CMS 设置。
  • domainTwo.com(cPanel 中的插件域,设置也指向文档根目录 / 所以它也通过 /index.php 运行)应该重定向到 /folderTwo 并且 URL 应该是 http://domainTwo.com,所以重写应该类似于 / index.php?it=folderTwo
  • 此外,例如页面 /folderTwo/subfolderA 应该可以从 http://domainTwo.com/subfolderA 访问。

我会想到以下几点:

RewriteCond %{HTTP_HOST} domainTwo\.com$ [NC]
RewriteRule ^$ /index.php?it=folderTwo [L,QSA]

#standard CMS rewrite:
RewriteRule ^(.*)$ /index.php?it=$1 [L,QSA]

这让我发疯了,有人吗?

【问题讨论】:

  • “这让我发疯了,有人吗?”

标签: apache .htaccess mod-rewrite


【解决方案1】:

我看不出你为什么不能只使用(.*) 将其余的 url 添加到路径中。我还添加了一个检查文件是否已经存在。这可以防止规则匹配自身(因为 index.php 存在)并防止规则匹配各种其他文件,例如图像、css 或 js 文件。

RewriteCond %{HTTP_HOST} domainTwo\.com$ [NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ /index.php?it=folderTwo/$1 [L,QSA]

#standard CMS rewrite:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ /index.php?it=$1 [L,QSA]

【讨论】:

  • 谢谢@Sumurai8,我想我的头脑过于复杂了,需要在第三行的folderTwo之前添加一个/,这一切都很好,RewriteRule ^$ /index.php?it=/ folderTwo [L,QSA],谢谢一百万 :)
  • 如何在不创建循环的情况下进一步将 URL domainTwo.com/folderTwo 重写为 domainTwo
  • 通过在其他规则之前添加一个规则来检查它是否为domaintwo.com,然后将^folderTwo/?(.*)$重写为$1,并带有redirect&last标志([R,L])。跨度>
  • 太棒了。谢谢Sumurai8。网上有很多关于 apache 重写的坏信息,我有时觉得我在绕圈子。我从你的两个答案中学到了很多东西,你是一个绅士和一个学者:-)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-07-11
  • 2017-04-14
  • 2014-10-24
  • 2013-01-09
  • 2023-03-07
  • 2014-02-22
  • 1970-01-01
相关资源
最近更新 更多