Создавайте постоянные ссылки SEO, используя PHP без .htaccess - PullRequest
0 голосов
/ 16 февраля 2011

В настоящее время URL моей страницы выглядят так:

http://ourdomain.com/articles/?permalink=blah-blah-blah

Я хочу преобразовать их в:

http://ourdomain.com/articles/blah-blah-blah

Как я могу сделать это с помощью PHP, но не с .htaccess?

Ответы [ 4 ]

2 голосов
/ 16 февраля 2011

Как я могу сделать это с помощью php, но не с .htaccess ..

Ты не можешь. Вам нужно будет указать веб-серверу, как обращаться с URL-адресами, которые физически не существуют. В Apache это делается в центральной конфигурации или в файле .htaccess.

Если на вашем сервере уже есть AccepPathInfo On, вы можете попробовать использовать URL-адреса вроде

http://ourdomain.com/index.php/articles/blah-blah-blah

, который будет перенаправлять на index.php и иметь articles/blah-blah-blah в переменной $_SERVER["PATH_INFO"]. Этот метод известен как «переписывание URL-адреса для бедного человека», поскольку вы не можете избавиться от части index.php в URL-адресе. Если упомянутая настройка включена (я думаю, что это по умолчанию), вы можете сделать это без использования файла .htaccess.

1 голос
/ 17 февраля 2011

Вы можете достичь этого без mod_rewrite, если у вас есть доступ к конфигурации сервера.Предполагая, что вы используете Apache, первое, что вам нужно сделать, это включить опцию MultiViews в корневом каталоге вашего документа (т.е. добавить Options MultiViews).Теперь скопируйте ваш /articles/index.php в /articles.php (поместите скрипт в корневой каталог вашего документа и переименуйте его), и адаптируйте ваш скрипт так, чтобы он читал $_SERVER["PATH_INFO"] для получения правильной страницы (это, конечно, зависит отAcceptPathInfo On).

MultiViews обеспечит вызов сценария article.php при предоставлении URL-адреса / article / blah-blah.

0 голосов
/ 17 февраля 2011

Это можно сделать на PHP без изменения .htaccess

Просто напишите следующий код в index.php или default.php

<?php
if (isset($_GET['permalink'])) {
    header('Location: '.urlencode($_GET['permalink']));
}
?>

Это работает, потому что при вводе следующего URL:

http://ourdomain.com/articles/?permalink=blah-blah-blah

Имя файла не указывается.Таким образом, сервер проверяет наличие в указанном каталоге файла « index » или « default ».

Предполагается, что файл index.php присутствует, поэтому сервер вызовет:

http://ourdomain.com/articles/index.php

с бла-бла-бла в переменной GET постоянная ссылка

PHP-код проверяет наличие переменной permalink GET и перенаправляет с помощью метода header () .

EDIT: добавлен urlencode () всделать проверку ввода

0 голосов
/ 16 февраля 2011

Я не думаю, что вы можете легко сделать это без изменения .htaccess. Вам определенно нужно будет использовать mod_rewrite. Смотрите ответы здесь для получения дополнительной информации: Специальная ссылка на страницу профиля, например www.domain.com/username

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...