只有一些规则适用于测试环境,所有工作都在实时工作

时间:2016-12-21 05:00:00

标签: apache .htaccess mod-rewrite

我几年前一直在更新我的网站。我最近从ubuntu 16.04的Windows测试环境(为此目的完美地运行,没有问题)。多年的经验。这是一个非常奇怪的问题,我不知道如何修复它。

我已经缩短了我的htaccess,目的只是告诉你哪些有效,哪些无效。

if (hasCreditCard($('#memberId').val())) {
  ...
}
else{
  ...
}

function hasCreditCard(memberId) {
    var url = getHostName() + "/members/" + memberId + "/creditcard";
    jQuery.ajax({
        type: "head",
        url: url,
        contentType: "application/json",
        headers: {
            "Authorization": "Basic " + $.cookie('authorization')
        },
        success: function (data, status, jqXHR) {
            if (jqXHR.status == 200) {
                return true;
            }
            return false;
        },
        error: function (jqXHR, status) {
            return false;
        }
    });
}

因此。在我的Windows测试环境和实时服务器上,顶级规则完全正常,但在我的新开发环境中,只有底层规则似乎适用。如果我尝试请求localhost / admin / short,它会给我404.如果我要求任何不以' admin'开头的网址,则不会请求img目录,并且isn& #39;存在的ta文件,重写会将它发送到media.php,就像它应该的那样。

localhost / admin / short ==>会发生什么?本地主机/ admin.php的P =短

和noo线索。我想也许它可能是区分大小写的东西,但是没有所有的php文件都是小写的。有人有主意吗?我能提供的任何信息?

所以我在这里不知所措。除了其他不起作用的事情

RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^admin/([^/]*)/? /admin.php?p=$1 [QSA,L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !^/?(img)
RewriteRule ^([^\.]+)$ /media.php?i=$1 [NC,L,QSA]

我的意图:localhost / upload ==>本地主机/ upload.php的

可能是文件权限问题吗?这就是它的样子:

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.*?)/?$ $1.php [L]

我找到一个答案说:

  事实证明-rw-rw-r-- 1 www-data www-data 10113 Nov 13 15:23 admin.php -rw-rw-r-- 1 www-data www-data 2796 Nov 13 14:07 index.php -rw-rw-r-- 1 www-data www-data 3664 Nov 13 11:49 media.php -rw-r--r-- 1 root www-data 261 Dec 20 23:57 .htaccess 已经有了。{1}}   /etc/apache2/sites-enabled/000-defaultAllowOverride All也有/etc/apache2/apache2.conf   我们的网络DirectoryAllowOverwrite None相同的条目。所以   一定要检查两个地方!

我改变了它,但仍然无法正常工作。

奇怪的是,如果我把重写信息放在我的apache2.conf中,它就可以了 像这样

<Directory /var/www/html>
RewriteEngine on
... etc ...
</Directory>

2 个答案:

答案 0 :(得分:0)

您的规则可能更好:

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^ - [END]
RewriteRule ^admin/([^/]*) admin.php?p=$1 [NS,QSA,DPI,END]
RewriteRule ^(?!img/)[^\.]+$ media.php?i=$0 [NS,QSA,DPI,END]

答案 1 :(得分:0)

Options Indexes FollowSymLinks