2012-02-22 3 views
0

Я пытаюсь превратить свой динамический URL в статический URL. Это типичный URL, что теперь у меня есть: http://www.somedomain.com/design/index.php?p=about.htaccess dynamic to static URL

Я хотел бы, чтобы это было: http://www.somedomain.com/about

До сих пор, я получил его выглядеть следующим образом: http://www.somedomain.com/design/about.html

Это Rewriterule Я использую: RewriteRule ^([a-z]+).html$ index.php?p=$1 [L]

Как бы изменить его, чтобы он выглядел так: http://www.somedomain.com/about?

Спасибо за любую помощь! Очень ценим!

ответ

0

Использование правил перезаписи для предоставления «статического» URI NEVER хорошая идея.

Несколько других идей, которые вы можете использовать:

  • сделать «о» странице каталога (папки) с файлом под названием index.php или index.html в нем. Таким образом, URL-адрес показывает http://example.com/about/, и информация, которую вы хотите, по-прежнему может отображаться по мере необходимости.
  • Используйте метод POST вместо GET методов. Это будет отображаться как http://example.com/about.php (Примечание: нет ? или других параметров.)
  • Используйте оба метода, чтобы дать «бесшовный» URI на переходах страниц.
+0

Мой текущий index.php динамически загружает информацию сейчас из других каталогов и базы данных. Таким образом, использование другой папки для каждой страницы, вероятно, не будет работать для моей ситуации. – Rick

+0

PenguinCoder, вы можете не подумать, что это хорошая идея, но это чрезвычайно распространенная практика, и с тенденцией к «оптимизированным для SEO» URI это становится все более. Это не основной взгляд, поэтому лучше было бы квалифицировать такие радикальные заявления «по-моему» :-) – TerryE

0

Рик, ты на правильном пути. Вам нужно прочитать документацию перезаписи Apache. Для вашего docroot/.htaccess запустить его с:

RewriteEngine On 
RewriteBase /

Тогда обобщенной версией правила:

Rewrite Rule ^(\w+)$  index.php?p=$1 [L] 

будет переписаны любыми запросы, которые для слова строки в index.php. Вы должны знать, что механизм перезаписи отсканирует файл .htaccess, если произошло совпадение, поэтому вам нужно убедиться, что вы не создаете цикл. В этом случае строка замены имеет в ней «.», и шаблон не работает, поэтому этого не произойдет, но для более сложных случаев вам может понадобиться «охранять» правила одним или несколькими операторами RewriteCond. Снова прочитайте документацию Apache.