У меня есть строка запроса, которая изменяет содержимое страницы, в зависимости от того, что пользователь вводит после вопросительного знака в URL-адресе.
http://mysite.subdomain.com/?3
Загрузите контент, назначенный ID 3
http://mysite.subdomain.com/?34
Загружает контент, назначенный на 34.
Что мне нужно, чтобы войти в мой .htaccess файл, так что, когда пользователь переходит к
http://mysite.subdomain.com/1234
он загружает контент, который будет загружен, если пользователь ввел
http://mysite.subdomain.com/?1234
По сути, я хочу очистить URL-адрес и удалить вопросительный знак. Благодарю. (Я понимаю, что это основной вопрос)
Поскольку ваш javascript уже обрабатывает часть URL-адреса, вам не нужен htaccess. Например, javascript принимает ?OdfgzaBv2qY
, удаляет вопросительный OdfgzaBv2qY
и помещает оставшийся OdfgzaBv2qY
в ID в iFrame.
Поскольку javascript использует window.location.search
сценарий ожидает, что переменные будут установлены после вопросительного знака в URL-адресе. Так что http://www.mysite.com/?3 будет работать, но когда вы заходите на сайт http://www.mysite.com/3, этого не произойдет, потому что window.location.search
остается пустым.
Причина, по которой htaccess не является решением, заключается в том, что htaccess обрабатывается сервером, javascript обрабатывается клиентами. Даже если htaccess работает, и вы перенаправляетесь на index.html?3
javascript по-прежнему видит URL-адрес http://www.mysite.com/3, а не последний запрос. Итак, в основном: сервер понимает, что переменная имеет значение 3 в фоновом режиме, но javascript видит то, что видит пользователь: дружественный URL-адрес без вопросительного знака.
<script type="text/javascript"> //GET DATA FROM URL ...http://www.mysite.com/YOUTUBE_ID var DATA = window.location.pathname.replace("/", ""); window.onload = function() { var YouTube = document.getElementById('YouTube'); YouTube.src = "http://www.youtube.com/embed/" + DATA; }; </script>
window.location.pathname СЛЕДУЕТ взять /3
и заменить /
. В то время как window.location.search принимает ?3
часть и заменяет ?
Основным файлом .htaccess для этого будет:
<IfModule mod_rewrite.c> RewriteEngine on RewriteBase / RewriteRule ^([0-9]+)$ index.php?id=$1 [L] </IfModule>
Ofcourse index.php? Id = 1 следует заменить на любую страницу, которую вы используете для выполнения запроса.
Краткое объяснение:
([0-9]+)
) Обратите внимание, что это не работает для http://www.domain.com/49/ .. так как слэш в конце не соответствует. Это можно сделать:
RewriteRule ^([0-9]+)/$ $1 [L,R=301] RewriteRule ^([0-9]+)$ index.php?id=$1 [L]
это сначала выглядит, если есть косая черта, если он перенаправляет на «безрезультатный» url (R = 301: Redirect 301 = постоянный переадресация), а затем он соответствует второму правилу и выполняет запрос.
Попробуй это
RewriteRule ^([a-zA-Z0-9\-]+)$ index.php?id=$1 [QSA,L,NC]