所以我有这个.htaccess:
RewriteEngine On
RewriteRule ^([^/]*)/$ /brand.php?brand=$1 [L]
的index.php
<a href="/brand.php?brand=audi">audi</a>
brand.php
<?php
if(isset($_GET['brand'])) {
echo "brand is ".$_GET['brand'];
} else {
echo "no brand selected";
}
?>
根据http://www.generateit.net/mod-rewrite/index.php它应该有效。
点击该链接后,您的网址将显示为domain/brand.php?brand=audi
。但我希望它看起来像domain/audi/
。它工作得很好,所以我想。但是当你输入domain / asdvasdvasdvkasdv /时,它只会说:品牌是asdvasdvasdvkasdv 而不是没有品牌选择,因为brand.php上从未有过品牌。< / p>
使用mysql版本10.1.22-MariaDB
在Linux上运行的Apache答案 0 :(得分:1)
您的rewriteRule仅将 / bradname / 映射到旧网址 /brand.php?brand=brandname 。要将旧网址重定向到新网址,您需要一个aditional rewriteRule。在现有的RewriteRule
之前添加以下内容RewriteEngine on
#1)old to new uri handler
RewriteCond %{THE_REQUEST} /brand\.php\?brand=([^\s]+) [NC]
RewriteRule ^ /%1/? [L,R]
#2)Your new to old uri handler
这会将 /brand.php?brand=brandname 从外部重定向到 / brandname / 。
答案 1 :(得分:0)
这个怎么样?
RewriteRule path/brand.php?brand=(.*)/ path/$1/
答案 2 :(得分:0)
有几种方法可以解决这个问题,但我认为这是最好的方法:
的.htaccess
RewriteEngine On
RewriteRule ^brand/([^/]*)/$ /brand.php?brand=$1 [L]
HTML
<a href="/brand/audi/">audi</a>
您需要链接到代表brand.php的子目录/brand/
。在brand.php中,您只需检查品牌的价值是否在数据库中。
您需要链接到/ brand / brandname /才能获得brand.php。如果您使用/brand.php?brand=brandame
作为链接,则不会重写该网址。