Переписывание URL с использованием .htaccess, строка запроса в качестве имени файла

#php #.htaccess #url-rewriting

#php #.htaccess #url-переписывание

Вопрос:

Если мой URL-адрес http://www.xyz.com/index.php?view=abc затем он должен открыться http://www.xyz.com/abc.php

Что я должен написать в .htaccess??

Заранее спасибо.

Комментарии:

1. Что вы хотите, чтобы ваши конечные пользователи вводили в свои браузеры? index.php?view=abc (что отличается от обычной перезаписи), или abc.php ? То, как вы спросили, не дает понять, что увидят ваши пользователи.

2. на самом деле я хочу, чтобы пользователь открыл index.php?view=abc тогда abc.php будет исполнено. и если пользователь вводит напрямую abc.php тогда он / она не сможет открыть эту страницу. Пользователю должен потребоваться доступ к нему через index.php?view=abc.

Ответ №1:

Если мой URL-адрес http://www.xyz.com/index.php?view=abc затем он должен открыться http://www.xyz.com/abc.php

Для этого вам не нужен .htaccess, просто введите index.php

 $view = $_GET['view'];
if (strpos($view, '/') === false amp;amp; $view != "index" amp;amp; file_exists("$view.php"))
  require "$view.php";
  

Убедитесь, что в вашем корневом каталоге нет других уязвимых php-файлов (но я бы рекомендовал использовать другие / лучшие методы для проверки пользовательского ввода по url).


Если вы хотите переписать наоборот, ваш .htaccess может выглядеть примерно так:

 RewriteEngine on

RewriteCond %{REQUEST_URI}  !^/index.php
RewriteRule ^([a-z] ).php$  /index.php?view=$1  [L]
  

Комментарии:

1. Спасибо. Технология. Это работает. но что, если мне нужен обратный регистр. если кто-то вводит URL, например, www.xyz.com/login.php затем его следует перенаправить на, www.xyz.com/index.php?view=login

2. @user985361, разве это не то, что во второй части моего ответа?