2015-10-31 3 views
0

Я использую простой HTAccess правило перенаправления для перенаправления: -Htaccess перенаправляет в неправильном направлении

http://localhost/sell_script/s.php?value=1 

в

http://localhost/sell_script/s/1 

Когда я напрямую загрузить http://localhost/sell_script/s.php?value=1, он отлично работает. Но когда я загружаю http://localhost/sell_script/s/1, он снова перенаправляет меня на http://localhost/sell_script/s.php?value=1.

В чем может быть проблема?

Мой Htaccess: -

RewriteEngine on 
Options +FollowSymlinks 
RewriteBase/

RewriteRule ^s/(.*) sell_script/s.php?value=$1 [R] 
+0

, но это правило описывает точно второе поведение. Где правило для первого поведения? – JohnnyAW

+0

Я не умею переписывать. Я пошел за учебником и приземлился здесь. –

ответ

0

Я написал эту простую переписку для вас.

#ErrorDocument 404/
RewriteEngine On 
#RewriteCond %{SERVER_PORT} 80 

RewriteRule ^s/(.+)$ s.php?id=$1 [L,QSA] 

Это перенаправлять s.php?id=1 к s/1.

+0

Спасибо, это решило мою проблему. –

0

Чтобы быть ясно из того, что у вас есть выше, редирект из

http://localhost/sell_script/s/1 

в

http://localhost/sell_script/s.php?value=1 

не другой наоборот.

Если ваш RewriteBase - /, вы должны указать sell_script в свое правило.

RewriteRule ^sell_script/s/(.*)$ /sell_script/s.php?value=$1 [L,R=301] 

Также обратите внимание, что я добавил L использовать правило конечную точку, и изменил переписывают на 301 код, который более поисковых систем дружественных, между прочим.

+0

Ваше правило выдает 500 внутренних ошибок сервера для «http: //localhost/sell_script/s.php? Value = 1' и' http: // localhost/sell_script/s/1' –

+0

У меня были L и R назад в правила. Попробуй. – Jameson

+0

Загрузка 'localhost/sell_script/s/1' перенаправляет мне: -' http: //localhost/s.php? Value = 1', которого не существует. –

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