2015-04-27 3 views
1

Я пытаюсь переписать URL-адрес с использованием файла .htaccess, но он не работает. Сначала я попробовал много на моем локальном хосте, а затем на мой сервер, однако он не работает .. Я до сих пор получаю оригинальный URL .То что у меня есть ..URL Rewrite Правило не работает .htaccess

Оригинальный URL: -

http://test.1click.com.pk/specific_hall.php?hall_name=Shalimar+Hall&hall_id=1

Я хочу: -

http://test.1click.com.pk/Shalimar+Hall.php

Мой файл .htaccess: -

<IfModule mod_rewrite.c> 
    RewriteEngine on 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteRule ^([^/]*)\.php$ /specific_hall.php?hall_name=$1&hall_id=1 [L] 
    </IfModule> 

Я до сих пор получаю оригинальный URL .. Может кто-нибудь, пожалуйста, указать, что почему переписывают правило не работает? Я много пробовал, не добившись успеха. Заранее спасибо.

+0

Вы всегда хотите Shalimar-Hall.php или зависит от величины hall_name? –

+0

Спасибо за ответ @Sunil Pachlangia. Я хочу, зависит от значения hall_name. –

+0

Что произойдет, если вы используете http://test.1click.com.pk/Shalimar+Hall.php url ?? –

ответ

1

Вам необходимо включить параметр hall_id в ваш новый формат url, чтобы переписать его обратно. В противном случае mod_rewrite не имеет возможности это узнать.

Вы можете поместить этот код в корневом HTAccess

RewriteEngine On 
RewriteBase/

RewriteCond %{THE_REQUEST} \s/specific_hall\.php\?hall_name=([^\s&]+)&hall_id=(\d+)\s [NC] 
RewriteRule^%2-%1.php? [R=301,L] 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^(\d+)-([^/]+)\.php$ specific_hall.php?hall_name=$2&hall_id=$1 [L] 

Пример:

  1. http://example.com/specific_hall.php?hall_name=Shalimar+Hall&hall_id=1 будет перенаправлять на http://example.com/1-Shalimar+Hall.php (нет необходимости изменить ссылки в файлах).
  2. http://example.com/1-Shalimar+Hall.php будет внутренне переписать (= отображения того же содержания) http://example.com/specific_hall.php?hall_name=Shalimar+Hall&hall_id=1
+1

Спасибо @ Justin Lurman. Оно работало завораживающе. Можете ли вы обновить этот файл .htaccess, чтобы удалить знак + между строкой .. например (Shalimar + Hall). Я хочу, чтобы Shalimar Hall или Shalimar-Hall. Заранее спасибо. –

+0

Добро пожаловать. Да, это возможно. Но не могли бы вы сказать мне, может ли 'hall_name' содержать любую тире' -'? Потому что было бы проблемой, если 'Shalimar + Hall' станет' Shalimar-Hall', и у вас есть «родные» тире в других. Пример: если 'hall_name' является' Something-special', тогда это будет 'Something + special' (что неверно). На самом деле, вы должны убедиться, что выбранный вами персонаж изначально не во всех других возможных значениях «hall_name» –

+0

Да[email protected] Lurman 'hall_name' может содержать тире' -' ... Спасибо за ваш ответ и время ... –

Смежные вопросы