2012-12-18 64 views
0

与.htaccess文件URL重写MOD

website.com/b.php?g=666改变这些网址,以website.com/666

网站。 com/g/2/1.gifwebsite.com/2/1

这是怎么完成的

也简单的例子来学习如何做到这一点?

感谢

+2

网上有很多网页给出了例子。谷歌的“URL重写htaccess”。第一个命中是在Apache文档中:http://httpd.apache.org/docs/2.0/misc/rewriteguide.html –

回答

0

你可以把这个你.htaccess

RewriteEngine On 
RewriteRule ^([^/]*)$ /b.php?g=$1 [L] 

,让您第一图案里面工作。如果您不仅需要b.php(需要它与任何 PHP文件一起使用),还可以根据需要修改规则。 (这个问题没有说明该规则应该是多么普遍。)

它是否有效取决于在主httpd.conf文件中是否启用了这样的设置。换句话说,Apache可能设置为而不是允许您在.htaccess文件中使用重写引擎。因人而异。

要了解这些工作方式,请浏览the Apache documentation,特别是关于this page的示例。

你也可以试试你的运气,如rewrite rule generator,但是阅读文档也很好,所以你对生成的规则有什么了解。

第二个可能与这方面的工作:

RewriteEngine On 
RewriteRule ^([^/]*)([^/]*)$ /g/$1/$2.gif [L] 

(当然,你不必把“RewriteEngine叙述在”两次,如果你使用的第一个也是如此。)

+0

好的欢呼的第一位,但我不明白如何做第二个呢? ? – user1616846

+1

我正在处理这个问题,但这很困难,因为我无法在您的Web服务器上进行实验来验证我的规则是否正常工作....我仅限于纯粹的理性主义方法。 – iconoclast

+0

非常感谢。你能做第二个,忘记第一个吗? – user1616846

0

对于内部重写的请求http://website.com/666/b.php?g=666

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^([^/]+)/?$ /b.php?g=$1 [L] 

对于内部重写为http://website.com/2/1到的请求:

RewriteCond %{REQUEST_URI} ^/([^/]+)/([^/]+)/?$ 
RewriteCond %{DOCUMENT_ROOT}/g/%1/%2.gif -f 
RewriteRule^/g/%1/%2.gif [L]