У меня есть внешний javascript, который генерирует форму согласия на использование файлов cookie, защиту данных и т. Д. Сценарий загружается на страницы клиентов с моего сервера и проверяет наличие URL-адреса для информации о защите данных.Для лучшего понимания здесь я покажу только функции javascript, которые имеют непосредственное отношение к вопросу:
var ping_url = function (url) {
var request = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject("Microsoft.XMLHTTP");
request.open('HEAD', url, true);
request.send();
if (request.status === "404") return false;
else return true;
};
var find_page = function () {
var pages = [];
pages.push('./datenschutz.html'); // I want a 404 for this
pages.push('./service/datenschutz.html'); // I want a 404 for this
pages.push('./service/datenschutz'); // I want a 200 for this
var i, s, len = pages.length;
for (i=0; i<len; ++i) {
if (i in pages) {
s = pages[i];
if (ping_url(s)) return s;
}
}
return window.location.href + '#404'; //fallback to actual page
};
Это работает хорошо, если используются URL-адреса с конечным ".html".Сейчас я работаю над сайтом клиентов, где URL-адреса не содержат «.html», а только «/ user / 23456» или «/content/here-is-the-friendly-readable-url".
Вопрос в том, как мне нужно изменить файл htaccess таким образом, чтобы mod_rewrite обрабатывал все остальные параметры, но отправлял 404, если URL содержит или заканчивается строкой ".html"?
Вотактуальный неизмененный файл .htaccess, который до сих пор прекрасно работает.
<IfModule mod_rewrite.c>
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{QUERY_STRING} ^(.*)?$
RewriteRule ^/?(.*/)?de/([^.]*)(.[^\?]*)? index.php?lang=1&rewrite_values=$2&%1 [L]
RewriteRule ^/?(.*/)?en/([^.]*)(.[^\?]*)? index.php?lang=2&rewrite_values=$2&%1 [L]
RewriteRule ^/?(.*/)?fr/([^.]*)(.[^\?]*)? index.php?lang=3&rewrite_values=$2&%1 [L]
RewriteRule ^/?(.*/)?it/([^.]*)(.[^\?]*)? index.php?lang=4&rewrite_values=$2&%1 [L]
RewriteRule ^/?(.*/)?es/([^.]*)(.[^\?]*)? index.php?lang=5&rewrite_values=$2&%1 [L]
RewriteRule ^/?(.*/)?hu/([^.]*)(.[^\?]*)? index.php?lang=6&rewrite_values=$2&%1 [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
#RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^ index.php?page_id=1&lang=1&show_lang_select=1 [L]
RewriteRule ^(.+)$ index.php?lang=1&page_id=1 [QSA,L]
</IfModule>