Я проектирую веб-сайт. Я хочу, чтобы мой адрес веб-сайта выглядел следующим образом:
Я не хочу, чтобы мой сайт выглядел как http://something.com/profile.php. Я хочу, чтобы расширение .php
было удалено в адресной строке, когда кто-то открывает мой сайт. Другими словами, я хочу, чтобы мой сайт был следующим: http://something.com/profile
В качестве второго примера вы можете посмотреть адрес веб-сайта StackOverflow.
Может кто-то, пожалуйста, помогите мне в этом? Благодаря!
Просто добавьте файл .htaccess в корневую папку вашего сайта (например, /home/domains/domain.com/htdocs/) со следующим содержимым:
RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME}\.php -f RewriteRule ^(.*)$ $1.php
Сначала проверьте, установлен ли модуль mod_rewrite. Затем, будьте осторожны, чтобы понять, как это работает, многие люди получают это назад.
Вы не скрываете URL-адреса или расширения. Что вы делаете, так это создать новый URL-адрес, который ссылается на старый, например
URL для размещения на вашем веб-сайте будет yoursite.com/play?m=asdf
или еще лучше
yoursite.com/asdf
Хотя каталог asdf не существует. Затем с установленным mod_rewrite вы помещаете это в .htaccess. В основном, он говорит, что если запрошенный URL-адрес НЕ является файлом и НЕ является каталогом, направьте его на мой скрипт:
RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ /play.php [L]
Почти сделано – теперь вам просто нужно написать кое-что в свой PHP-скрипт для анализа нового URL-адреса. Вы хотите сделать это так, чтобы OLD работали тоже – то, что вы делаете, – это поддерживать систему, в которой переменная всегда точно совпадает с OR или создаёт таблицу базы данных, которая сопоставляет «дружественный URL-адрес» с идентификатором продукта. Примером может служить
/ Some-Cool-Video (который равен идентификатору продукта asdf)
Преимущество этому? Поисковые системы индексируют ключевые слова «Some Cool Video». ASDF? Кто будет искать это?
Я не могу дать вам подробностей о том, как программировать это, но возьмите строку запроса, откройте конец
yoursite.com/Some-Cool-Video
превращается в "asdf"
Затем установите для переменной m значение
м = ASDF
Таким образом, оба URL-адреса по-прежнему будут попадать в один и тот же продукт
yoursite.com/play.php?m=asdf yoursite.com/Some-Cool-Video
mod_rewrite может делать много других важных вещей, Google для этого и активировать его на вашем сервере (возможно, он уже установлен).
У вас разные варианты. Один из них создает папку с именем «профиль» и переименует ваш «profile.php» в «default.php» и помещает его в папку «profile». и вы можете отдавать приказы на эту страницу таким образом:
Старая страница: http://something.com/profile.php?id=a&abc=1
Новая страница: http://something.com/profile/?id=a&abc=1
Если вы не удовлетворены, оставьте комментарий для сложных методов.
Проблема создания каталога и хранения index.php в нем заключается в том, что
Решениями являются 1. MOD REWRITE (как было предложено выше). 2. Используйте php-код для динамического включения других файлов в индексный файл. Читайте немного больше об этом здесь http://inobscuro.com/tutorials/read/16/
Вот простой способ PHP, который я использую.
Если запрашивается страница с расширением .php, новый запрос выполняется без расширения .php. Расширение .php больше не отображается в поле адреса браузера.
Я придумал это решение, потому что ни один из многих предложений .htaccess не работал для меня, и это было быстрее реализовать на PHP, чем пытаться выяснить, почему .htaccess не работал на моем сервере.
Поместите это в начало каждого файла PHP (желательно прежде всего):
include_once('scripts.php'); strip_php_extension();
Затем поместите эти функции в файл «scripts.php»:
//==== Strip .php extension from requested URI function strip_php_extension() { $uri = $_SERVER['REQUEST_URI']; $ext = substr(strrchr($uri, '.'), 1); if ($ext == 'php') { $url = substr($uri, 0, strrpos($uri, '.')); redirect($url); } } //==== Redirect. Try PHP header redirect, then Java, then http redirect function redirect($url) { if (!headers_sent()) { /* If headers not yet sent => do php redirect */ header('Location: '.$url); exit; } else { /* If headers already sent => do javaScript redirect */ echo '<script type="text/javascript">'; echo 'window.location.href="'.$url.'";'; echo '</script>'; /* If javaScript is disabled => do html redirect */ echo '<noscript>'; echo '<meta http-equiv="refresh" content="0; url='.$url.'" />'; echo '</noscript>'; exit; } }
Очевидно, вам все равно нужно настроить Apache для перенаправления любого запроса без расширения на файл с расширением. Вышеупомянутое решение просто проверяет, имеет ли запрошенный URI расширение, если он запрашивает URI без расширения. Затем Apache перенаправляет файл с расширением, но только запрашиваемый URI (без расширения) отображается в поле адреса браузера. Преимущество состоит в том, что все ваши ссылки «href» в вашем коде могут по-прежнему иметь полное имя файла, то есть включая расширение .php.
На самом деле, самый простой способ манипулировать этим – это
И тогда URL http://www.yoursite.com/data будет читать этот файл index.php. Если вы хотите принять его дальше, откройте в нем подпапку (например, «Список»), поместите еще один index.php в эту папку, и вы можете запустить http://www.yoursite.com/data/list этот файл PHP.
Таким образом, вы можете полностью контролировать это, очень полезное для SEO.
как Игорь, но должен работать без линии 2:
RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^([^\.]+)$ $1.php [NC,L]
Удалите файл Extenstion через .htaccess
Исходный URL: http://ravinderrathore.herobo.com/contact.php
htaccess, чтобы удалить .php, .html и т. д. расширение файла из url.
RewriteRule ^(.*)$ $1.php After Rewriting: http://ravinderrathore.herobo.com/contact RewriteEngine on RewriteCond %{THE_REQUEST} ^(.+)\.php([#?][^\ ]*)?\ HTTP/ RewriteRule ^index(.*)?$ index.php$1 [L,QSA] RewriteRule ^login_success(/)?$ login_success.php [L,QSA] RewriteRule ^contact(/)?$ contact.php [L,QSA]
почти так же, как и первый ответ, но еще одно преимущество.
RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME}\.html -f RewriteRule ^(.*)$ $1.html RewriteCond %{REQUEST_FILENAME}\.php -f RewriteRule ^(.*)$ $1.php
Просто добавьте, если у вас есть другое расширение файла на ваших сайтах
Тони, ваш сценарий в порядке, но если у вас есть 100 файлов? Нужно добавить этот код во все это:
include_once ( 'scripts.php');
strip_php_extension ();
Я думаю, что вы включаете меню в каждый php-файл (возможно, ваше меню отображается на всех ваших веб-страницах), поэтому вы можете добавить эти 2 строки кода только в свой файл меню. Эта работа для меня: D