Извините за вопрос noob, не могу понять, от чего я должен искать.
Я делаю сайт с этой страницей product.php?id=777
Я бы хотел, чтобы это было product/777
Спасибо!
Извините за вопрос noob, не могу понять, от чего я должен искать.
Я делаю сайт с этой страницей product.php?id=777
Я бы хотел, чтобы это было product/777
Спасибо!
Создайте файл .htaccess в своем корневом каталоге и введите следующую команду:
Options +FollowSymLinks
RewriteEngine on
RewriteRule ^product/([0-9]+)$ product.php?id=$1
Вместо использования mod_rewrite вы также можете использовать следующее в своем .htaccess:
DefaultType application/x-httpd-php
И просто назовите script product
на сервере (без расширения файла .php).
Итак, вы можете вызвать его напрямую и получить любую добавленную строку как $_SERVER["PATH_INFO"]
это как-то связано с переписыванием URL, это то, что вы обычно устанавливаете с модулем mod_rewrite в apache
Это то, с чем легко справляются фреймворки, такие как 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
, которая может быть любого формата, который вы хотите, и обрабатывать запрос соответствующим образом.
Для меня этот код работает:
в разделе /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]
Я делал это в течение многих лет, используя следующую команду для выполнения файла с именем "Поддержка" (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. Я еще не понял, почему это так, но проблема с настройкой обработчика по умолчанию.