重命名url隐藏文件扩展名

我想显示url
http://some.com/designit/portfolio.php?cat=website&subcat=nature

http://some.com/designit/portfolio/website/nature.

catsubcat在URL中可能会出现,但并不总是。

我把这个.htaccess文件放在designit文件夹中:

 RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ $1.php [L,QSA] RewriteRule ^portfolio/?$ portfolio.php[NC,QSA] RewriteRule ^portfolio/([a-zA-Z0-9_-]+)/?$ portfolio.php?cat=$1[L,NC,QSA] 

现在,它正在显示
..some.com/designit/portfolio.php

..some.com/designit/portfolio

但没有显示
..some.com/designit/portfolio.php?cat=website

..some.com/designit/portfolio/website

我得到“内部服务器错误。服务器遇到内部错误或configuration错误,无法完成您的请求。”

我需要做什么来解决这个问题?

这是你的解决scheme:

http://some.com/designit/portfolio/website/nature

应该给

http://some.com/designit/portfolio.php?cat=website&subcat=nature

你只需要一个重写规则:

 RewriteEngine On RewriteRule /designit/portfolio/([az]+)/([az]+)$ /designit/portfolio.php?cat=$1&subcat=$2 

请注意:

  • 猫和子猫应该只是alpha字符(你可以改变它以适应你的需要)
  • 你不需要testing它是否是一个文件,因为“只有alpha caracters =没有扩展名=你确定它不是一个请求的文件”(除非你共享没有扩展名的文件,但这将是奇怪的(至less))

请参阅下面的url:可以帮助你。

http://corz.org/serv/tricks/htaccess2.php?page=all

把你的更具体的规则,第二个,在总则之前,它应该工作。

试试下面:

 RewriteEngine on RewriteRule ^portfolio/([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)$ /disignit/portfolio.php?first-var=$1&second-var=$2 [NC]