Я пытаюсь сделать SEO дружественный сайт, используя php …
В папке jcheck у меня есть файл index.php, который принимает один параметр «id» в качестве входного.
mydomain.com/jcheck/index.php?id=1 works
Как я могу сделать это следующим образом
mydomain.com/jcheck/1
Я попытался сделать файл .htaccess и поставить
RewriteEngine on RewriteCond %{REQUEST_URI} 1/ RewriteRule 1/ http://mydomain.com/jcheck/index.php?id=1
Как я могу заставить его работать?
Вы можете сделать это двумя способами:
Маршрут .htaccess с mod_rewrite
Добавьте в корневую папку файл .htaccess и добавьте что-то вроде этого:
RewriteEngine on RewriteRule ^/Some-text-goes-here/([0-9]+)$ /picture.php?id=$1
Это скажет Apache, чтобы включить mod_rewrite для этой папки, и если ему будет задан URL-адрес, соответствующий регулярному выражению, он перезаписывает его внутри того, что вы хотите, без того, чтобы конечный пользователь его видел. Легкая, но негибкая, поэтому, если вам нужно больше энергии:
Маршрут PHP
Вместо этого поставьте вместо этого следующее .htaccess:
FallbackResource index.php
Это скажет, что он запускает ваш index.php для всех файлов, которые он обычно не может найти на вашем сайте. Там вы можете, например:
$path = ltrim($_SERVER['REQUEST_URI'], '/'); // Trim leading slash(es) $elements = explode('/', $path); // Split path on slashes if(count($elements) == 0) // No path elements means home ShowHomepage(); else switch(array_shift($elements)) // Pop off first item and switch { case 'Some-text-goes-here': ShowPicture($elements); // passes rest of parameters to internal function break; case 'more': ... default: header('HTTP/1.1 404 Not Found'); Show404Error(); }
Вот как это делают большие сайты и CMS-системы, поскольку это позволяет гораздо большую гибкость в анализе URL-адресов, конфигурационных и зависимых от базы данных URL-адресов и т. Д. Для спорадического использования жестко закодированные правила перезаписи в .htaccess будут все равно.
***** Скопируйте этот контент из URL-адреса, переписывая с помощью PHP **
В файле htaccess в вашем каталоге jcheck используйте следующие правила:
RewriteEngine On RewriteBase /jcheck/ RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^([0-9]+)/?$ index.php?id=$1 [L,QSA]
Попробуй это:
RewriteRule ^jcheck/([0-9]+)$ jcheck/index.php?id=$1
RewriteEngine on RewriteRule ^/jcheck/([0-9]+)$ /jcheck/index.php?id=1
и см. также здесь, это будет полезно для вас
Поместите файл .htaccess внутри папки jcheck
и напишите:
RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-D RewriteRule ^1/?$ index.php?id=1