需要为子文件夹视图创建.htaccess URL

时间:2018-03-07 08:24:06

标签: php apache .htaccess

我在Apache配置文件中启用了http://hostname/system_name/dynamic_text/login

这是URL用户在浏览器中输入

http://hostname/system_name/index.php?id=dynamic_text

这需要如下工作

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([a-z])$/login index.php?login=$1 [NC,L]

我已经创建了重写规则,如下所示。但它不起作用。

    var output;
    var createPromotionBox = function () {
        var choice = '';
        var b = document.getElementById('button-container');
        var box = document.createElement('div');
        box.setAttribute('id', 'alert-box');
        box.setAttribute('class','alert');
        b.appendChild(box);
        var text = document.createElement('div');
        text.setAttribute('class','alert-content');
        text.setAttribute('id', 'alert-text');
        text.innerHTML = 'Promote your pawn!<br>';
        box.appendChild(text);

        var arr = ['Q', 'N', 'R', 'B'];
        for(var i in arr) (function(i){
            var btn = document.createElement('button');
            btn.setAttribute('class','promotion-button');
            btn.setAttribute('id',arr[i]+'btn');
            btn.innerHTML = arr[i];
            btn.onclick = function () {
                output = arr[i];
                deletePromotionBox();
            };
            text.appendChild(btn);
        })(i);
    };

    var deletePromotionBox = function () {
        var arr = ['Q', 'N', 'R', 'B'];
        for(var i in arr) {
            removeElement(arr[i]+'btn');
        }
        removeElement('alert-text');
        removeElement('alert-box');
    };

    var removeElement = function (elementId) {
        var e = document.getElementById(elementId);
        e.parentNode.removeChild(e);
    };
    document.getElementById('btn').onclick = createPromotionBox;

您能否提出更好的方法来满足此要求

2 个答案:

答案 0 :(得分:2)

问题在于您的正则表达式模式,因为[a-z]仅匹配单个小写字母。您可以使用此规则:

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([\w-]+)/login/?$ index.php?login=$1 [NC,L,QSA]

答案 1 :(得分:0)

这是根据上面的答案和评论创建的,并且按预期为我工作。

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([\w-]+)/login/?$ index.php?login=$1 [QSA,NC,L]