.htaccess — Как создать SEO дружественных URL-адресов с php и htaccess?

Я пытаюсь создать SEO дружественных URL-адресов с помощью файла htaccess и PHP. Но это не работает.

Я попробовал код ниже в localhost (работает XAMPP)

RewriteEngine On
RewriteBase /real/

RewriteRule ^property-details/([0-9a-zA-Z]+) property-details.php?pid=$1 [NC, L]

-2

Решение

Существуют разные способы достижения одинаковых результатов, но это даст вам руководство.

Сначала активируйте mod_rewrite, раскомментировав эту строку в файле httpd.conf или apache2.conf:

LoadModule rewrite_module libexec/apache2/mod_rewrite.so

Измените AllowOverride с none на All для своего каталога www

    <Directory />
AllowOverride All
Require all denied
</Directory>

Перезапустите Apache:

sudo apachectl restart

или же

    sudo service apache2 restart

В папке www создайте файл .htaccess и добавьте следующее:

    # | SEO URL
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteRule ^.*$ ./index.php

Затем в вашем файле index.php:

<?php
$url_params=get_url_params();

// then access your url_params
if (isset($url_params[1]))
{
switch ($url_params[1])
{
case 'login':
echo "<h1>Login</h2>";
break;

case 'contact':
echo "<h1>Cantact</h2>";
break;

default:
echo "<h1>Home</h2>";
break;
}

}

function get_url_params($site_url='')
{
$base_url=explode("/", $site_url);
$request  = $_SERVER['REQUEST_URI'];
$url_params = explode("/", $request);
$delete_extensions=array('.html','.htm');
$data[]=array();
foreach ($base_url as $b)
{
unset( $url_params[array_search( "$b", $url_params )] );
}
foreach ($url_params as $u)
{
foreach ($delete_extensions as $e){
$u=str_replace($e, "", $u);
}
$data[]=$u;
}
return $data;
}
?>
1

Другие решения

[NC, L]

Вы должны удалить пространство между вашим RewriteRule флаги. Это приведет к ошибке 500 Internal Server — в этом случае вам следует проверить журналы ошибок на предмет более значимой ошибки. Это должно быть написано как:

[NC,L]

Пробелов нет


ОБНОВИТЬ:
Чтобы mod_rewrite работал в отдельных каталогах .htaccess, FollowSymLinks также должен быть включен (если его еще нет). В самом верху вашего файла .htaccess добавьте:

Options +FollowSymLinks
0

По вопросам рекламы [email protected]