2012-11-13 133 views
0

我正在爲一個有博客/新聞頁面作爲其網站一部分的客戶進行項目工作。這一切都很好,但他們要求他們有自定義永久鏈接,而不是標準問題php變量。.htaccess mod_rewrite無法正常工作。重定向到404錯誤

我在searchfriendlyurls.com上使用了生成器來創建重寫規則。我已經添加到我的.htaccess文件,該文件位於網站的根文件夾中,但是當我點擊鏈接時,它只是將我發送到我的主機404錯誤頁面。有什麼建議麼。下面.htaccess文件:

Options -Multiviews 

RewriteEngine On 
RewriteBase/

# Force search engines to use domain.example.org.uk 
RewriteCond %{HTTP_HOST} !^domain\.example\.org\.uk$ 
RewriteRule ^(.*) http://domain.example.org.uk/$1 [R=301,L] 

# Specify search friendly URLs 
RewriteRule ^media/news/([a-z]+)/([a-z]+)/([a-z]+)/([a-z]+)$ /media/news/article.php?article_url_year=$1&article_url_month=$2&article_url_title=$3&article_id=$4 [L] 

# Generated for free at SearchFriendlyURLs.com 

任何建議,將不勝感激

+0

你可以添加一些例子,你點擊什麼確切的鏈接上? – jeroen

+0

將我帶到文章頁面的鏈接位於主頁上,目前鏈接到乾淨的'漂亮'網址。 –

回答

0

添加另一個正則表達式變化到混合:

RewriteRule ^media/news/([^/]+)/([^/]+)/([^/]+)/([^/]+)$ /media/news/article.php?article_url_year=$1&article_url_month=$2&article_url_title=$3&article_id=$4 [L] 

例如對於URL路徑:/媒體/新聞/ 2012/11 /試驗品/ 1

重寫日誌,如果啓用,將顯示:

[rid#7f920b4b00a0/initial] (3) [perdir /srv/www/htdocs/] applying pattern '^media/news/([^/]+)/([^/]+)/([^/]+)/([^/]+)$' to uri 'media/news/2012/11/test-article/1' 
[rid#7f920b4b00a0/initial] (2) [perdir /srv/www/htdocs/] rewrite 'media/news/2012/11/test-article/1' -> '/media/news/article.php?article_url_year=2012&article_url_month=11&article_url_title=test-article&article_id=1' 
[rid#7f920b4b00a0/initial] (3) split uri=/media/news/article.php?article_url_year=2012&article_url_month=11&article_url_title=test-article&article_id=1 -> uri=/media/news/article.php, args=article_url_year=2012&article_url_month=11&article_url_title=test-article&article_id=1 
[rid#7f920b4b00a0/initial] (2) [perdir /srv/www/htdocs/] trying to replace prefix /srv/www/htdocs/ with/
[rid#7f920b4b00a0/initial] (1) [perdir /srv/www/htdocs/] internal redirect with /media/news/article.php [INTERNAL REDIRECT] 
[rid#7f920bcdda00/initial/redir#1] (3) [perdir /srv/www/htdocs/] strip per-dir prefix: /srv/www/htdocs/media/news/article.php -> media/news/article.php 
[rid#7f920bcdda00/initial/redir#1] (3) [perdir /srv/www/htdocs/] applying pattern '^media/news/([^/]+)/([^/]+)/([^/]+)/([^/]+)$' to uri 'media/news/article.php' 
[rid#7f920bcdda00/initial/redir#1] (1) [perdir /srv/www/htdocs/] pass through /srv/www/htdocs/media/news/article.php 
+0

這也行不通... –

+0

你在瀏覽器中輸入了什麼網址? – arober11

+0

我在瀏覽器中輸入了乾淨的網址,但它仍然不起作用 –

0

我注意到,您的article.php可能期待numbers您的查詢article.php判斷? article_url_year= $ 1 & article_url_month= $ 2但是您的RewriteRule RewriteRule^media/news/([a-z]+)只會匹配字母。

嘗試更換這行:

RewriteRule ^media/news/([a-z]+)/([a-z]+)/([a-z]+)/([a-z]+)$ /media/news/article.php?article_url_year=$1&article_url_month=$2&article_url_title=$3&article_id=$4 [L] 

有了這個:

RewriteRule ^media/news/([a-zA-Z0-9-]+)/([a-zA-Z0-9-]+)/([a-zA-Z0-9-]+)/([a-zA-Z0-9-]+)$ /media/news/article.php?article_url_year=$1&article_url_month=$2&article_url_title=$3&article_id=$4 [L] 

,看看它是否工作。

此代碼將只允許:

  • 所有字母(大寫和小寫)。
  • 所有數字。
  • 破折號( - )
+0

我試圖將表達式更改爲您所建議的表達方式,但仍然無濟於事......我可以澄清一下:鏈接將我帶到文章頁面是否需要指向查詢或生成的網址? –