我正试图通过在灯系统上使用htaccess来理解网址重写方法。
我是我的网站站长,我可以完全访问系统(ubuntu 12.04)。
我成功配置了htaccess以删除www和index.php,所以它似乎工作正常。 当我尝试重写像这个示例中的经典URL(网上有数千个这样的经典URL)时出现问题:
RewriteEngine on
RewriteRule ^products/([A-Za-z0-9-]+)/?$ results.php?products=$1 [NC]
我想改写
mysite/results.php?products=string
到
mysite/string
所以我认为这是正确的例子。 无论如何,它不起作用。 我尝试了几个类似的例子,但我不明白为什么它根本不起作用。
我的.htaccess:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
# Removes index.php from ExpressionEngine URLs
RewriteCond %{THE_REQUEST} ^GET.*index\.php [NC]
RewriteCond %{REQUEST_URI} !/system/.* [NC]
RewriteRule (.*?)index\.php/*(.*) /$1$2 [R=301,NE,L]
# Directs all EE web requests through the site index file
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php/$1 [L]
# Always remove www (with a hard redirect)
RewriteCond %{HTTP_HOST} ^www\.mysite\.com$ [NC]
RewriteRule ^(.*)$ http://www.site.com/$1 [R=301,L]
# Try
RewriteCond %{QUERY_STRING} ^page=(\d+)
RewriteRule ^products/([A-Za-z0-9-]+)/?$ results.php?products=$1 [R=301,QSA,L,NC]
</IfModule>
任何建议都将不胜感激。
答案 0 :(得分:0)
这应该在root .htaccess中运行:
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([A-Za-z0-9-]+)/?$ results.php?products=$1 [L,QSA]