我需要从网址获取链接。 例如:
http://mysite.com/site/http://myfriendsite.com/news/index.php?title=خبر&category=اقتصادی
site.php 获取链接http://myfriendsite.com/news/index.php?title=خبر&category=اقتصادی
并显示此网址。
site.php代码:
<?php
if(isset($_GET['url_rss']))
{
echo $_GET['url_rss'];
}
else
{
echo '<h2>Error 404</h2>';
}
?>
我的.htaccess
Options +FollowSymLinks
RewriteEngine On
RewriteRule ^site/(.*) site.php?url=$1
但我看到http:/myfriendsite.com/news/index.php
而不是http://myfriendsite.com/news/index.php?title=خبر&category=اقتصادی
答案 0 :(得分:1)
您需要使用条件来获取查询字符串或标志QSA以在最后附加它:
RewriteCond %{QUERY_STRING} ^(.*)$
RewriteRule ^site/(.*) site.php?url=$1\?%1 [B]
您可以在您的site.php上使用以下内容:
$path = $_SERVER['REQUEST_URI'];
$url = substr($path, 6, strlen($path));
通过此规则,它将为您提供myfriendsite.com/news/index.php?title=خبر&category=اقتصادی
:
RewriteCond %{QUERY_STRING} ^(.*)$
RewriteRule ^site/[^/]*/(.*)$ site.php?url=$1\?%1 [B]
答案 1 :(得分:1)
这种URL无法在QUERY_STRING或RewriteRule中捕获,因为那时Apache会重新格式化URL并将http://...
转换为http:/...
。
诀窍是使用%{THE_REQUEST}
变量,它代表在网络服务器上收到的原始http请求。
通过httpd.conf
启用mod_rewrite和.htaccess,然后将此代码放在.htaccess
目录下的DOCUMENT_ROOT
中:
Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+site/([^\s]+) [NC]
RewriteRule (?!^site\.php$)^ /site.php?url=%1 [L,B,NC]
PS:此处需要否定前瞻以防止无限循环。