2011-06-01 212 views

回答

1

将这个代码在.htaccess文件:

Options +FollowSymlinks -MultiViews 
RewriteEngine on 

RewriteCond %{REQUEST_URI} ^/+id/([^/]*)/type/([^/]*)/url/(http://)?(.*)$ [NC] 
RewriteRule^/api.php?uid=%1&type=%2&url=%3%4 [L,NE] 

这将同时支持/id/1/type/2/url/http://domain2.tld/id/1/type/2/url/domain2.tld的URI。

+0

非常感谢,正在工作:) – Alexander 2011-06-03 07:58:25

0

现在我们开始营业了!创建.htaccess文件,然后将这些行:

RewriteEngine On 
RewriteBase/
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^id/(.*)/type/(.*)/url/http:/(.*)$ api.php?uid=$1&type=$2&url=$3 [L] 

注意,这最终会传递domain2.tldurl参数 - 你要添加的“http://”回你自己。正如我们在评论中所讨论的那样,您最好使用urlencode的正确格式的网址,但如果这不是一个选项,则会执行此操作。

网上没有关于mod_rewrite的信息缺失。这里有一个博客:http://www.htmlist.com/how-to/a-simplemod_rewrite-tutorial/ - 如果您在Google上搜索“mod_rewrite”,则只是众多搜索结果中的一个。

+0

我已经试过这个,但不工作。在url /我需要使用http://domain.tld之后,这不起作用。 – Alexander 2011-06-01 18:56:41

+0

A)我不明白你的意思是“uset http://domain.tld,这不起作用”,以及B)如果你已经包含了你已经尝试过的东西,所以我们不会**浪费我们的时间**建议你已经尝试过的事情。这部分工作中的原则 - 我直接从我自己的网站上运行的htaccss文件中取出。 :)编辑你的问题,并包括所有相关的细节,包括你已经尝试过。 – 2011-06-01 18:59:23

+0

我有一个像这样的链接api.php?uid = 1&args = 1&url = http://domain.tld(http://之间没有空格),我想用^ id /(.*)重写这个链接, /type/(.*)/url/(.*)$最后的语法不起作用,我的PHP没有得到$ 3。没有mod_rewrite一切都很好,但模式重写不工作$ 3(&url = $ 3)。我不知道如何解释更多。 – Alexander 2011-06-01 19:04:30