2013-02-18 2 views
1

Я пытаюсь замаскировать URL в сторону, как в то время как реальный URL является www.somedomain.com/subfolder/index.php?p=page3 он показывает www.somedomain.com/subfolder/page3, я знаю, такие вопросы уже задавали много здесь, и я ищется но большинство результатов не удовлетворяло то, что я ищу, также я почти ничего не знаю, кроме оснований по настройке htaccess..htaccess URL маскировка вместо перенаправления

один результат я получил, когда я искал имеет следующий код HTAccess:

Варианты + FollowSymLinks
Опции + Индексы
RewriteEngine На
RewriteRule^index.php $% {QUERY_STRING} [C]
RewriteRule p = (. *) Www.somedomain.com/subfolder/$1? [R = 301, L]

Он сделал трюк, касающуюся URL переписывания, но он перенаправляет на страницу, а не просто маскировка URL, и это дает ошибку 404, даже когда я извлекал R = 301, что не работает.

Также приведенный выше код дает ошибку сервера 500 при запуске индексной страницы подпапки www.somedomain.com/subfolder/.

В заключение я хотел бы упомянуть, что я тестирую подкаталог в localhost, если это имеет значение, потому что некоторые коды, которые я нашел в Интернете, либо просто не работают, либо дают 500 Ошибка сервера.

Большое спасибо заранее.

+1

Я пометил свой ответ для удаления - я смутил себя, указав ваш пункт назначения первым и ваш источник вторым, как вы их перечислили в своем вопросе, поэтому я их отменил в ответе (обычно проще выписать, в том же порядке вещи появляются в правиле - источнике, затем в пункте назначения). Ответ @ faa получает право на заказ. Извини за это. –

ответ

2

Вы можете попробовать это:

Options +FollowSymlinks 
RewriteEngine On 
RewriteBase/
# Prevent loops 
RewriteCond %{REQUEST_URI} !index\.php   [NC] 
RewriteCond %{REQUEST_URI} ^/([^/]+)/([^/]+)/? [NC] 
RewriteRule .* %1/index.php?page=%2   [L] 

Карты беззвучно:

http://www.somedomain.com/anyfolder/val с или без пробелов.

Вышеуказанный URL-адрес введен и указан в адресной строке браузера.

Кому:

http://www.somedomain.com/anyfolder/index.php?p=val

струнных anyfolder и val считаются динамическими.

Для постоянного перенаправления заменить [L] на номер [R=301,L].

+0

Этот ответ правильный, просто знайте (@JEES), что второй RewriteCond является специфическим для двухуровневой структуры каталогов, как в примере в вашем вопросе. Если вам нужно применить его к другому количеству уровней каталогов, вам нужно будет его отрегулировать. –

+0

Я думаю, что я запутал всех, я извиняюсь за это, но то, что я пытаюсь сделать, - это преобразовать мой так называемый «уродливый URL», который создается путем динамической вставки страницы «www.somedomain.com/subfolder/index.php ? p = page3' в более привлекательный и удобный для SEO «хороший URL», как этот «www.somedomain.com/subfolder/page3' Или даже в 'www.somedomain.com/subfolder/pages/page3', все еще загружая одну и ту же страницу и вставляя ту же строку запроса. –

+0

'www.somedomain.com/subfolder/page3' это то, что делает правило в моем ответе. Попробуй. Излишне говорить, что 'www.somedomain.com/subfolder/page3' - это URL-адрес, связанный или введенный и отображаемый в адресной строке браузера. Если он работает для вас, я могу изменить ответ для любого количества уровней в структуре каталогов, но, опять же, попробуйте сначала. –

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