關於wordpress在修改固定連接後,總顯示Not Found的問題

參考來源:php

http://chinablog.blog.51cto.com/276793/280278html

1、問題背景正則表達式

使用wordpress搭建網站,爲了讓文章URL看起來漂亮一點,wordpress提供了設置-》固定連接設置-》選擇你喜歡的url結構。apache

因此,咱們通常爲了用戶看着這個url順眼一點,會進行url地址的自定義,好比:http://localhost/wordpress/archives/36.html,wordpress默認的是http://localhost/wordpress/archives/36,也就是說咱們能自定義這個url結構。瀏覽器

2、問題存在安全

我就如圖所示選擇了數字型的url結構,而後保存設置,點擊站點查看。ide

看到的結果是Not Found。wordpress

下圖,沒法顯示文章內容性能

 

 

3、解決問題學習

我忽略了一個問題,那就是要讓Apache支持mod_rewrite模塊,而我並無在Apache的配置文件中開啓。

開啓Mod_rewrite模塊方法:

一、直接打開apache\conf\httpd.conf

二、搜索 LoadModule rewrite_module modules/mod_rewrite.so (可能版本不同這個不同,不過Apache2都是這個),去掉前面的#

三、 搜索AllowOverride None 替換爲 AllowOverride All

保存文件-》重啓Apache-》刷新站點

文章顯示了。如圖:

 

 

 

 

關於Mod_rewrite

mod_rewrite這個模塊是如何工做的呢?

 

mod_rewrite截獲符合特定條件的URL,並按照設定的規則將它們改寫成須要的URL。

好比,能夠將 http://www.mysite.com/product.php?pid=123312 這樣的URL改寫成
http://www.mysite.com/product-123312.html 這樣的靜態URL

 

重寫的規則

重寫的規則的表達式:

 

RewriteRule 模式 替換 [選項]

 

RewriteRule 是一個簡單的命令告訴mod_rewrite這個模塊如何去重寫,關鍵的地方在於能夠在模式和替換中使用正則表達式來匹配相應的字符,正則表達式的普遍的靈活性能將動態的URL轉換成各式各樣的符合要求的靜態URL。看看這個重寫規則:

 

RewriteRule /products/([0-9]+)
/fancy/products.php?id=$1

 

當你在瀏覽器地址欄輸入 http://www.mysite.com/product/123 時,這個地址被重寫爲 http://www.mysite.com/fancy/product.php?id=123

 

這樣,訪問者就沒法知道你的程序真正放在那個目錄,程序的真正名字是什麼,這也提升了網站的安全係數;這樣的URL也去掉了?=這些字符,易於搜索引擎的機器人爬行你的網站。

經過正則表達式,能夠寫出更復雜的重寫規則:

RewriteRule ^/products$ /content.php
RewriteRule ^/products/([0-9]+)$ /content.php?id=$1
RewriteRule ^/products/([0-9]+),([ad]*),([0-9]{0,3}),([0-9]*),([0-9]*$)

重寫規則的選項有

      • ‘forbidden’ 或 ‘f’ - 403 禁止
      • ‘gone’ 或 ‘g’ - 410 gone
      • ‘nocase’ 或 ‘NC’ - 大小寫敏感
      • ‘next’/N’ - 回到第一條規則
      • ’skip=N’ 或 ‘S=N’ - 跳過下面的N條規則

 看到這裏,又再次提醒我學習正則表達式,要學習的還有好多好多。

相關文章
相關標籤/搜索