Я вызываю ?page=about
использовании метода GET в форме на index.php (т. Е. «About» – это опция выбора). Когда я нажму кнопку «Отправить», URL-адрес будет выглядеть так:
http://example.com/?page=about
Однако я хотел бы, чтобы это выглядело так:
http://example.com/about
но держите скрипт (PHP), работающий на index.php (не делайте и не хотите иметь файл «about»), т.е. Я хотел бы использовать значения GET на одной странице после отправки формы. Я могу заставить PHP-скрипт работать, он реагирует хорошо, но переписывание URL-адресов вообще не работает.
Я попытался переписать следующий htaccess, но он ничего не делает, URL остается таким же, как указано выше.
Мой htaccess:
Options +FollowSymLinks RewriteEngine On RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ ?page=$1 [L,QSA]
Я был бы очень признателен за вашу помощь, поскольку я понятия не имею, почему это не работает. Я просматриваю сеть, и все указывают на это правило, но для меня это вообще ничего не делает.
Заранее большое спасибо!
РЕДАКТИРОВАТЬ:
Позвольте мне опубликовать свой PHP-код, который я использую, извините, я пропустил это. На данный момент я удалил атрибут action
поскольку я использую его в браузере, который, как я знаю, отправляет мне то же самое при отправке формы:
<?php $page = $_GET['page']; switch($page){ case 'about': echo 'I am me'; break; case 'galery': echo 'Nice pictures here'; break; } ?> <body> <form action="/" method="get"> <select name="page"> <option value="about">about</option> <option value="galery">galery</option> </select> <input type="submit" value="Submit" /> </form> </body>
РЕДАКТИРОВАТЬ № 2:
Я должен был добавить action="/"
в тег формы, чтобы решение для anubhava работало.
Это должен быть ваш полный .htaccess:
Options +FollowSymLinks -MultiViews # Turn mod_rewrite on RewriteEngine On RewriteBase / #external redirect from /?page=about OR /index.php?page=about to /about RewriteCond %{THE_REQUEST} ^[AZ]{3,}\s/+(?:index\.php|)\?page=([^\s]+) [NC] RewriteRule ^ /%1? [R=301,L] #internal forward from /about to /?page=about RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-l RewriteRule ^(.+?)/?$ /?page=$1 [L,QSA]
Пытаться
... RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php?page=$1 [L,QSA]
А также
Я вызываю? Page = об использовании метода GET в форме на index.php
Попробуйте позвонить по правильной ссылке? ' /about
' вместо ' ?page=about
'