我有一个CMS来处理使用CMS创建的SEO友好URL。因此,像index.php
这样的www.url.com/index.php?id=slug
扩展名的任何内容都很好地更改为www.url.com/slug
。
但是,我还有超过一千页使用未连接到我的CMS的MYSQL查询字符串创建。所以我有:
www.url.com/item.php?id=001234&pg=author-title
生成页面需要id和pg中的信息。我想要的是这些页面网址:
www.url.com/item/001234/author-title.html
我查看过一些mod_rewrite教程,搜索所有这些方法,但我似乎无法让它工作。
这是我的.htaccess(请记住,我的CMS中使用和生成的一些内容:
编辑:好的,基于到目前为止的答案,我已将.htaccess更改为以下内容:
# Use PHP5 as default
AddHandler application/x-httpd-php5 .php
AddDefaultCharset UTF-8
# File modified on Dec 5 11:28:31 2011 by server
# For security reasons, mod_php is not used on this server. Use a php.ini file for php directives
# php_value default_charset "UTF-8"
Options -Indexes
Options +FollowSymLinks
# blocks direct access to the XML files - they hold all the data!
<Files ~ "\.xml$">
Order allow,deny
Deny from all
Satisfy All
</Files>
<Files sitemap.xml>
Order allow,deny
Allow from all
Satisfy All
</Files>
RewriteEngine on
# Usually it RewriteBase is just '/', but
# replace it with your subdirectory path
RewriteBase /
# Usually it RewriteBase is just '/', but
# replace it with your subdirectory path
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule /?([A-Za-z0-9_-]+)/?$ index.php?id=$1 [QSA,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^/?item/([0-9]+)/([a-zA-Z0-9_]+).html$ item.php?id=$1&pg=$2 [QSA,L]
编辑:到目前为止,使用反馈更改.htaccess后,重写的网址仍未产生所需的结果。我还有404。
答案 0 :(得分:1)
更改
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule /?([A-Za-z0-9_-]+)/?$ index.php?id=$1 [QSA,L] #passes to CMS
RewriteRule ^/?([a-zA-Z_]+)/([a-zA-Z_]+).html$ item.php?id=$1&pg=$2 [QSA,L] #passes to your stuff
到
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^/?item/([a-zA-Z_]+)/([a-zA-Z_]+).html$ item.php?id=$1&pg=$2 [QSA,L]
# conditions need to be repeated
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule /?([A-Za-z0-9_-]+)/?$ index.php?id=$1 [QSA,L]
始终将更具体的规则置于更一般的规则之上。
除非您的商品ID使用字母,否则使用:
RewriteRule ^/?item/([0-9]+)/([a-zA-Z_]+).html$ item.php?id=$1&pg=$2 [QSA,L]
答案 1 :(得分:0)
您需要在开头添加item
以匹配您提供的示例,并对您的角色类进行一些更改。尝试:
RewriteRule ^item/([a-zA-Z0-9_]+)/([a-zA-Z0-9_]+)\.html$ item.php?id=$1&pg=$2 [QSA,L]
这将匹配表单项的URL / [字母,数字和下划线的字符串] / [字母,数字和下划线的字符串] .html
如果您的ID只是数字,则可以删除第一个字符类中的字母。