2015-06-20 2 views
-1

Думаю, я никогда не спрашивал перед таким вопросом, и я знаю, что должен прочитать руководство, поэтому я это сделал, но я просто не могу сделать эту работу.Глупый вопрос mod_rewrite

мне нужно переписывают правило, чтобы перейти от этого:

https://www.proevisa.com/ar/idea.php?permalink=proevisa/is-it-safe-to-provide-my-personal-and-finance-information-online 

к этому:

https://www.proevisa.com/ar/proevisa/is-it-safe-to-provide-my-personal-and-finance-information-online 

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

Может кто-то, пожалуйста, помогите мне немного с этим?

Спасибо большое, Крис

+2

Чтобы решить эту проблему, вы должны показать свой текущий код. – Anonymous

ответ

0

Если нет строки запроса участвует, RedirectMatch может быть использована (не знаю, почему это было сделано, чтобы игнорировать эту часть URL, или, может быть, я ошибаюсь).

Во всяком случае, с mod_rewrite попробовать это:

RewriteCond %{REQUEST_URI}?%{QUERY_STRING} ^/ar/idea\.php\?permalink=(.*?)$ 
RewriteRule . /ar/%1? [R=301] 

Это предполагает, что есть RewriteEngine On директива присутствует, и нет никаких других mod_rewrite правила, которые могли бы смешать (если есть, рассмотреть вопрос об использовании L флаг или перестановка правил).

%1 ссылается на содержимое группы «regexp» после permalink=. ? после того, как он опустил старую строку запроса из результата. R=301 - постоянная переадресация.

Конечно, обновите ссылки на сайте, и после того, как старые ссылки исчезнут из индексов и закладок, удалите правила, поскольку они станут неуместными.

+0

Спасибо * 1000 Times Gas Welder ... htaccess действительно не для меня. –

0

Итак, я, наконец, пришел к более основанному на PHP решению, так как мой навык mod_rewrite не очень хорош. Это то, что я сделал:

<IfModule mod_rewrite.c> 
RewriteEngine On 
RewriteBase /proevisa/ 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ /proevisa/ar/idea.php?r=$1 
</IfModule> 

Да, это основано на структуре перезаписи Wordpress. Что это такое: в основном следующее:

  1. Определяет базовый путь как Proevisa, который является моим домашним каталогом.
  2. Если запрашиваемый URL не является файлом
  3. Если запрашиваемый URL не является каталогом
  4. Затем он перенаправляется на idea.php

Idea.php выполняет следующие действия:

//recibimos la información del usuario 
$idea->base_dir = "/proevisa/ar"; 
$idea->permalink = addslashes($_SERVER['REQUEST_URI']); 
$idea->permalink = str_replace($idea->base_dir, "", $idea->permalink); 
  1. Определяет еще раз базовый каталог.
  2. Анализ исходного запроса URI
  3. Очищает его, чтобы избежать проблем с постоянными линиями.

Затем мы запрашиваем базу данных, чтобы увидеть, есть ли какая-либо статья, соответствующая $ _SERVER ['REQUEST_URI'].

Это не конкретное решение проблемы, которую я описал, но она отлично работает, чтобы обрабатывать почти каждый отдельный случай с использованием PHP, как если бы он не был найден, вы можете легко перенаправить на PHP, или даже вы можете использовать LIKE в запросе и показать похожие результаты ...

Надеюсь, это поможет кому-то! Chris;

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