【问题标题】:Invisibly rewriting root to subdirectory using mod_rewrite (ajaxplorer)使用 mod_rewrite (ajaxplorer) 将根目录隐形重写到子目录
【发布时间】:2015-03-13 20:02:02
【问题描述】:

几个小时以来,我一直在阅读 mod_rewrite 示例的各种网站上寻找,并且在成功之前已经使用过很多次......但我现在正在尝试一些新的东西,但我终生无法获得它工作!

我正在使用一个名为AjaXplorer 的PHP 文件管理器工具,它位于我的服务器/ajaxplorer-core-4.0.4 根目录的子目录中。当我转到我网站的根目录http://domain.com/ 时,我希望它以不可见的方式重定向到/ajaxplorer-core-4.0.4 文件夹(但仍会在地址栏中显示根域)。

我仍然希望能够正常访问根目录下的其他文件/目录,只需输入路径即可。

我认为这是可能的?看起来相对简单,但我就是不能让它工作。

AjaXplorer 似乎从 /ajaxplorer-core-4.0.4/plugins 加载 js 文件和图像等,我觉得这就是它让我绊倒的地方。

任何指针将不胜感激!谢谢

【问题讨论】:

    标签: apache mod-rewrite pydio


    【解决方案1】:

    幸运的是在另一个答案中找到它:)

    RewriteEngine on 
    RewriteCond %{HTTP_HOST} ^(www.)?site.com$ 
    RewriteCond %{REQUEST_URI} !^/subdir/ 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteRule ^(.*)$ /subdir/$1 
    RewriteCond %{HTTP_HOST} ^(www.)?site.com$ 
    RewriteRule ^(/)?$ subdir/index.php [L]
    

    【讨论】:

    • 当没有启用漂亮的永久链接时,这很有效。如果我们启用永久链接,我们如何确保 www.domain.com/section1 -> www.domain.com/wordpress/section1 不返回 erro404 ?
    • 好吧,我想我解决了这个问题。在启用漂亮的永久链接之后,必须编辑 /wordpress 目录中的 .htaccess 文件:RewriteRule . /index.php [L] 行应更改为 RewriteRule . wordpress_subdir/index.php [L]
    【解决方案2】:

    如果这还不够:

    两个提示:

    如果您不是在托管环境中(= 如果它是您自己的服务器并且可以修改虚拟主机,不仅是.htaccess 文件),尝试使用RewriteLog 指令:它可以帮助您追踪此类问题:

    # Trace:
    # (!) file gets big quickly, remove in prod environments:
    RewriteLog "/web/logs/mywebsite.rewrite.log"
    RewriteLogLevel 9
    RewriteEngine On
    

    我最喜欢的检查正则表达式的工具:

    http://www.quanetic.com/Regex(别忘了选择 ereg(POSIX) 而不是 preg(PCRE)!)

    【讨论】:

    • 我所有的链接(和建议都是关于语法逻辑)
    猜你喜欢
    • 2012-01-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多