使用 .htaccess 文件更改这些 url
website.com/b.php?g=666到website.com/666
和
website.com/g/2/1.gif到website.com/2/1
这是怎么做的
还有简单的例子来学习如何做到这一点?
谢谢
使用 .htaccess 文件更改这些 url
website.com/b.php?g=666到website.com/666
和
website.com/g/2/1.gif到website.com/2/1
这是怎么做的
还有简单的例子来学习如何做到这一点?
谢谢
http://website.com/666
对于内部重写对to的请求/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
对于内部重写对to的请求/g/2/1.gif
:
RewriteCond %{REQUEST_URI} ^/([^/]+)/([^/]+)/?$
RewriteCond %{DOCUMENT_ROOT}/g/%1/%2.gif -f
RewriteRule ^ /g/%1/%2.gif [L]
你可以把这个放在你的.htaccess
RewriteEngine On
RewriteRule ^([^/]*)$ /b.php?g=$1 [L]
使您的第一个模式工作。如果您想要的不仅仅是b.php
工作(您希望它与任何PHP 文件一起工作),您可以根据需要修改规则。(这个问题没有具体说明规则应该有多普遍。)
它是否有效取决于是否在主 httpd.conf 文件中启用了此类设置。换句话说,Apache 可能被设置为不允许您在.htaccess
文件中使用重写引擎。YMMV。
要了解它们是如何工作的,请浏览Apache 文档,尤其是此页面上的示例。
您也可以尝试使用重写规则生成器之类的东西来碰碰运气,但最好阅读文档,这样您就可以了解生成的规则的作用。
第二个可能适用于此:
RewriteEngine On
RewriteRule ^([^/]*)([^/]*)$ /g/$1/$2.gif [L]
(当然,如果您也使用第一个,则不需要两次“RewriteEngine On”。)