【问题标题】:Mod Rewrite php htaccessMod重写php htaccess
【发布时间】:2013-08-13 02:57:27
【问题描述】:
我正在尝试在我的网站上使用干净的 url 以获得更好的 SEO。我这样做是使用带有 htaccess 的 mod 重写。网址如下http://mywebsite.com/s.php?share=100,我想接受http://mywebsite.com/s/100 之类的网址或用户选择的任何数字。我正在使用这个重写正则表达式,但它没有按预期工作
RewriteEngine On
RewriteCond %{REQUEST_FILENAME}!-f
RewriteCond %{REQUEST_FILENAME}!-d
RewriteRule ^([a-z]+)/([a-z\-]+)$ /$1/$2.php
RewriteRule ^share/([^/]*)$ /s.php?share=$1 [L]
谁能指出我做错了什么?
【问题讨论】:
标签:
php
regex
.htaccess
mod-rewrite
【解决方案1】:
您希望您的 URL 看起来像 http://mywebsite.com/s/100,这意味着 URI 是 /s/100,但您的模式看起来像 ^share/([^/]*)$。由于 URI 不以“share”开头,因此该模式将永远与您想要的 URI 匹配。试试:
RewriteRule ^s/([^/]*)$ /s.php?share=$1 [L]
此外,由于您正在请求 /s/ 并且有一个名为 /s.php 的文件,因此您需要确保 Multiviews 已关闭:
Options -Multiviews
总之,类似于:
Options -Multiviews
RewriteEngine On
RewriteCond %{REQUEST_FILENAME}!-f
RewriteCond %{REQUEST_FILENAME}!-d
RewriteRule ^([a-z]+)/([a-z\-]+)$ /$1/$2.php
RewriteRule ^s/([^/]*)$ /s.php?share=$1 [L]