我真的对我正在做的事情有一个很好的了解。遗憾。
这就是我重写这些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>
但每当我尝试这个网址时:
http://example.com/foo/bar/news/16-news-category-1/11-title
它始终返回404
错误:
在此服务器上找不到请求的网址/foo/bar/news.html/16-news-category-1/11-title
为什么要找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
答案 0 :(得分:11)
你的.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