Как переписать URL-адрес, чтобы удалить знак вопроса

У меня есть строка запроса, которая изменяет содержимое страницы, в зависимости от того, что пользователь вводит после вопросительного знака в 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-адрес и удалить вопросительный знак. Благодарю. (Я понимаю, что это основной вопрос)

Нет htaccess

Поскольку ваш 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

Основным файлом .htaccess для этого будет:

 <IfModule mod_rewrite.c> RewriteEngine on RewriteBase / RewriteRule ^([0-9]+)$ index.php?id=$1 [L] </IfModule> 

Ofcourse index.php? Id = 1 следует заменить на любую страницу, которую вы используете для выполнения запроса.

Краткое объяснение:

  • правило начинается с ^, а затем ищет числовое значение за базовым URL-адресом, поэтому, если у вас есть http://www.domain.com/42, правило начинается сразу после последнего /
  • Параметр $ определяет конец регулярного выражения правила.
  • index.php? id = $ 1 – это URL-адрес, который должен быть загружен (где $ 1 – параметр 1: ([0-9]+) )
  • [L] – это флаг «Последний», который указывает, что htaccess не должен искать другие правила, которые применяются

Обратите внимание, что это не работает для 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]