Подтвердить что ты не робот

Как выполнить веб-страницу PHP без расширения .php в URL?

Извините за вопрос noob, не могу понять, от чего я должен искать.

Я делаю сайт с этой страницей product.php?id=777
Я бы хотел, чтобы это было product/777

Спасибо!

4b9b3361

Ответ 1

Создайте файл .htaccess в своем корневом каталоге и введите следующую команду:

Options +FollowSymLinks
RewriteEngine on

RewriteRule ^product/([0-9]+)$ product.php?id=$1

Ответ 2

Вместо использования mod_rewrite вы также можете использовать следующее в своем .htaccess:

 DefaultType application/x-httpd-php 

И просто назовите script product на сервере (без расширения файла .php).

Итак, вы можете вызвать его напрямую и получить любую добавленную строку как $_SERVER["PATH_INFO"]

Ответ 3

это как-то связано с переписыванием URL, это то, что вы обычно устанавливаете с модулем mod_rewrite в apache

urlrewriting

Ответ 4

Это то, с чем легко справляются фреймворки, такие как CodeIgniter и Zend, но их можно выполнить только с Apache mod_rewrite, как это предлагали другие. В принципе, используйте такой .htaccess, чтобы направлять весь трафик на одну страницу:

<IfModule mod_rewrite.c>
    RewriteEngine On

        RewriteCond                     %{REQUEST_FILENAME} !-f
        RewriteCond                     %{REQUEST_FILENAME} !-d
    RewriteRule                 ^(.*)$ index.php?_url=$1 [QSA,L]
</IfModule>

Как только вы попадете на эту страницу, вы можете проанализировать эту переменную _url, которая может быть любого формата, который вы хотите, и обрабатывать запрос соответствующим образом.

Ответ 5

Для меня этот код работает:

в разделе /etc/apache2/sites-available/default "или" httpd.conf "

у вас должны быть (по крайней мере) эти параметры в каталоге по умолчанию

...
    <Directory />
        ...
        Options FollowSymLinks
        AllowOverride All
        ...
    </Directory>
...

ИЛИ в каталоге сайта для сайта

...
    <Directory "/var/www/my-site">
        ...
        Options FollowSymLinks
        AllowOverride All
        ...
    </Directory>
...

и создайте (возможно, он не существует, убедитесь, что он читается apache) или отредактируйте ".htaccess" в каталоге сайта (например, "/var/www/my- site/.htaccess" ) и добавьте этот код:

AddType application/x-httpd-php htm html php
AddHandler application/x-httpd-php .htm .html

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.php [NC,L]

Ответ 6

Я делал это в течение многих лет, используя следующую команду для выполнения файла с именем "Поддержка" (NOT Support.php, я НЕ хотел два способа получить доступ к файлу).

<Files Support>
    SetHandler php-script
</Files>

Тем не менее, я столкнулся с трудностями при использовании Plesk для выполнения сценариев как PHP 7.0. Корень (.com/index.php) будет работать, как только PHP 7, но любой из моих файлов php- script (.com/Support) будет работать как моя версия Plesk по умолчанию PHP 5.4. Я еще не понял, почему это так, но проблема с настройкой обработчика по умолчанию.