mod_rewrite и GoDaddy - PullRequest
       0

mod_rewrite и GoDaddy

11 голосов
/ 20 сентября 2011

У меня действительно есть только честное представление о том, что я делаю.Извините.

Это то, что я сделал, чтобы переписать URL-адреса, подобные этим:

http://example.com/foo/bar/news/1-category-name/2-item-name
http://example.com/foo/bar/news/1-category-name

в эти:

http://example.com/foo/bar/news.php?newsID=2
http://example.com/foo/bar/news-categories.php?categID=1

соответственно

<IfModule mod_rewrite.c>
  RewriteEngine on
  RewriteBase /foo/bar
  RewriteRule ^news\/([^\/]+)/([0-9]+)-([^\/]+)$   news.php?newsID=$3
  RewriteRule ^news\/([0-9]+)-([^\/]+)$            news-categories.php?categID=$1
</IfModule>

Но всякий раз, когда я пробую этот URL:

http://example.com/foo/bar/news/16-news-category-1/11-title

Всегда возвращается ошибка 404:

Запрошенный URL /foo/bar/news.html/16-news-Заголовок категории-1/11 не найден на этом сервере

Почему он пытается найти news.html?Что я делаю не так?

Я не знаю, относится ли это к делу, но example.com - это виртуальный (я действительно не знаю этого термина).Актуальные файлы также могут быть доступны через http://real-domain.com/qux/.Таким образом, вы бы сделали http://real-domain.com/qux/foo/bar/news/1-category-name/2-item-name, чтобы добраться до 2-item-name.

Также помогает ли сказать, что этот скрипт на самом деле работает на моей машине для разработки?

Development:
   PHP v5.3.5
   Apache v2.2

Live:
   PHP v5.3.6
   Apache v2.2

1 Ответ

11 голосов
/ 20 сентября 2011

Вы этот код в вашем .htaccess:

RewriteEngine on

RewriteRule ^news/([0-9]+)-([a-z\-]+)-([0-9]+)/([0-9]+)-([a-z\-]+)(\/?)$ /news.php?newsID=$4 [L,NC]
RewriteRule ^news/([0-9]+)-([a-z\-]+)/([0-9]+)-([a-z\-]+)(\/?)$ /news.php?newsID=$3 [L,NC]

RewriteRule ^news/([0-9]+)-([a-z\-]+)-([0-9]+)(\/?)$ /news-categories.php?categID=$1 [L,NC]
RewriteRule ^news/([0-9]+)-([a-z\-]+)(\/?)$ /news-categories.php?categID=$1 [L,NC]

так, когда кто-то идет к:

news/11-category-12 or
news/11-category-12/ or
news/11-category or
news/11-category/

это идет к: news-categories.php?categID=11

и когда кто-то идет на:

news/11-category-12/1-title or
news/11-category-12/1-title/ or
news/11-category/1-title or
news/11-category/1-title/

это идет к: news.php?newsID=1

Кроме того, убедитесь, что .htaccess находится в корне папки public_html, а также news.php и news-Categories.php

...