我在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;
您能否提出更好的方法来满足此要求
答案 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]