Как заставить приложение PHP использовать фактические URL, если Mod-Rewrite отключен? - PullRequest
0 голосов
/ 23 июля 2010

Я работаю над приложением PHP, все работает отлично, единственная проблема:

Я включил SEO Friendly URL, который перезаписывает фактические URL на виртуальные URL (я знаю, что вы, ребята, знаетеit)

Пример: hxxp: //www.website.com/index.php? page = about-us Для hxxp: //www.website.com/page/about-us/

Чего я хочу добиться, так это: если SEO URL / Mod Rewrite отключен, пользователь должен иметь возможность доступа к прямым / фактическим URL.

Вкратце, если Mod-Rewrite включен, веб-приложениедолжны автоматически использовать SEO-дружественные URL-адреса, в противном случае используйте URL-адреса по умолчанию.

Ответы [ 3 ]

1 голос
/ 23 июля 2010

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

getLink("?page=about-us")

0 голосов
/ 23 июля 2010

Хм .. может потребоваться немного подумать, чтобы найти правильное решение. Следуйте за мной здесь, если хотите:)

SEO URL были в основном введены, чтобы (1) включить читаемый человеком текст в URL.и (2) избавиться от параметров GET.

Чтобы на мгновение взглянуть на пункт (2), это был основной драйвер, потому что люди использовали about.php? id = 1, id = 2... id = 3457348, чтобы получить одну и ту же страницу, указанную в поисковых системах несколько раз, которая, конечно, была обнаружена и остановлена, тогда иногда люди пропускали сеанс id = 24234234, который также останавливался как дублирующаяся страница (он использует HTTP как протокол с отслеживанием состояния, когда это не так).

С URL-адресом все, начиная с первого символа до # #fragment, определяет ресурс (с точки зрения HTTP), поэтому справедливо, когданесколько разных URL разрешают одну и ту же «страницу», они действительно являются дубликатами.

Итак, отрицая параметры GET, вы решаете эту проблему, которая теперь не является проблемой. bКстати, давно, нет причины не использовать правильно параметры GET, кроме тщеславия.

Итак, вы действительно не решаете никаких проблем, а вместо этого вводите новую проблему, в которой выхотите, чтобы '/ page / about-us' и '? page = about-us' оба переходили на одну и ту же 'страницу', что означает, что у вас снова есть дублированные ресурсы, и это может быть обнаружено, и вы можете быть оштрафованы.

Таким образом, введя «URL-адреса SEO», вы фактически создали проблему, с которой «URL-адреса SEO» были «изобретены» для противодействия.

Это оставляет только точку зрения для читаемых человеком слов в URL-адресе.Предполагается, что URL-адреса должны быть прозрачными, поэтому они ничего не значат в реальности, но некоторым все еще нравится - поэтому я должен спросить, что не так с использованием '/? / Page / about-us' ... и если вы нев таком случае, что не так с созданием фиксированного файла с путем к файловой системе '/ page / about-us', который просто включает ваш index.php с заданными правильными переменными?

Конечно, вы можете создавать дубликаты страници иметь как SEO-дружественные URL-адреса, так и GET-параметры URL-адресов, но, как вы видите, это не будет SEO-дружественным сейчас, не так ли?

Что-то, что можно пережевать:)

0 голосов
/ 23 июля 2010

Используйте , чтобы избежать нарушения других директив .htaccess и / или 500 внутренних ошибок сервера, если Apache не понимает ваших правил.Также добавьте одну не переписывающую rewriterule (перед всеми остальными);

<IfModule mod_rewrite.c>
    RewriteEngine On
    #The next rule does no rewriting, but sets en environmental variable.
    RewriteRule .* - [E=RewriteCapable:On]
</IfModule>

В вашем файле (сохраните как настройку или проверьте места генерирования / вывода URL):

if(isset($_SERVER['RewriteCapable'])){
    //make fancy urls
} else {
    //cludgy old-style urls
}
...