【问题标题】:What change needs to be done to .htaccess file in order to see the actual URL?需要对 .htaccess 文件进行哪些更改才能看到实际的 URL?
【发布时间】:2015-03-25 17:40:24
【问题描述】:

我有一个网站。在它的 web 根文件夹中存在 .htaccess 文件,其中包含隐藏实际 URL 和生成漂亮 URL 的规则。

但我想查看实际的 URL,即请求如何到达服务器,哪些参数被发送到服务器上的哪个文件?

为此,我不知道需要对.htaccess 文件进行哪些更改。有人可以在这方面指导我吗?

为了清楚地了解我的问题,请参阅.htaccess 文件中的以下代码:

######################################
## [PHPFOX_HEADER]
##
## @copyright       [PHPFOX_COPYRIGHT]
## @author          Raymond Benc
## @package         PhpFox
## @version         $Id: htaccess.txt 5866 2013-05-10 09:06:38Z Raymond_Benc $
######################################

# Options -Indexes
# Options -Multiviews

# Header unset Pragma
# FileETag None
# Header unset ETag

# URL Rewrite
<IfModule mod_rewrite.c>
    RewriteEngine On

    #
    #  Full path to your site
    #
    RewriteBase /

    # Rename Photo Names
    # RewriteRule ^file/pic/photo/([0-9]+)/([0-9]+)/([A-Za-z0-9]{32}+)\-(.*?)_([0-9]*?)\.(.*)$ file/pic/photo/$1/$2/$3_$5.$6
    # RewriteRule ^file/pic/photo/([0-9]+)/([0-9]+)/([A-Za-z0-9]{32}+)\-(.*?)\.(.*)$ file/pic/photo/$1/$2/$3.$5 

    # 301 redirect if missing www.
    #RewriteCond %{HTTP_HOST} !^www\.
    #RewriteRule ^(.*)$ http://www.% {HTTP_HOST}/$1 [R=301,L]

    # 301 redirect if missing trailing slash
    #RewriteCond %{REQUEST_FILENAME} !-f
    #RewriteCond %{REQUEST_FILENAME} !-d
    #RewriteRule [^/]$ %{REQUEST_URI}/ [R=301,L]

    #
    #  Rules
    #
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*) index.php?do=/$1

    # Image Access Protection
    # RewriteRule ^file/pic/photo/(.*)\.(.*)$ static/image.php?file=$1&ext=$2
</IfModule>

# Modify Headers
<IfModule mod_expires.c>
    ExpiresActive ON

    # Cache files
    <FilesMatch "\.(ico|pdf|flv|jpg|jpeg|png|gif|swf|mp3|mp4)$">
        Header set Cache-Control "public"
        ExpiresDefault "access plus 2 months"
        Header unset Last-Modified
    </FilesMatch>

    # Cache JavaScript & CSS
    <FilesMatch "\.(js|css)$">
        Header set Cache-Control "public"
        ExpiresDefault "access plus 2 months"
        Header unset Last-Modified
    </FilesMatch>
</IfModule>

# Compress JavaScript & CSS
<IfModule mod_deflate.c>
    <FilesMatch "\.(js|css|php)$">
        SetOutputFilter DEFLATE
    </FilesMatch>
</IfModule>

请帮助我只进行必要的更改以获取实际 URL。虽然网站应该可以正常运行。

谢谢。

【问题讨论】:

  • 我想看什么意思?
  • @j_s_stack:由于漂亮的 URL,我无法识别请求将发送到哪个 PHP 文件以及将哪些参数发送到请求中。这就是为什么我想查看实际的 URL,为此需要对 .htaccess 文件规则进行一些更改,但我不知道如何更改它。
  • htaccess 从漂亮 URL 生成查询字符串,而不是从查询字符串生成漂亮 URL - 这意味着您不需要在 .htaccess 中进行更改
  • 使用:$_SERVER['REQUEST_URI']
  • @anubhava:请告诉我需要对 .htaccess 文件进行哪些更改才能回答。这对我来说很棒。

标签: php apache .htaccess url mod-rewrite


【解决方案1】:

生成friendly urls 的不是您的.htaccess 文件。是您的框架或 CMS 执行此操作。 .htaccess 所做的是将friendly urls 转回所谓的query strings

它总是遵循模式:

RewriteRule from-what-users-see to-what-php-sees [flags]

如果您想知道您的 CMS/Framework 看到的 URL,请使用 $_SERVER['REQUEST_URI']

【讨论】:

    【解决方案2】:

    生成友好网址的不是您的 .htaccess 文件。是你的 框架或CMS。 .htaccess 所做的是转换 友好的 url 返回所谓的查询字符串。

    它总是遵循模式:

    RewriteRule from-what-users-see to-what-php-sees [flags]
    

    我复制了它,因为这主要是我评论的内容,但写得很好;)

    要获取查询字符串,请在相关 PHP 文件的顶部使用 echo $_SERVER['QUERY_STRING']; - $_SERVER['REQUEST_URI'] 只会为您返回漂亮的 URL。

    编辑:使用$_SERVER['SCRIPT_NAME'] 可以获得当前脚本的路径。

    【讨论】:

    • 带回声 $_SERVER['QUERY_STRING'];我得到了 "do=/profile-57/" 和 echo $_SERVER['REQUEST_URI'];我得到了/profile-57/。我仍然无法获取 PHP 文件。这是否意味着它正在调用 index.php 文件?
    • 感谢您的帮助。我试过 echo $_SERVER['SCRIPT_NAME'];然后我在地址栏中得到了带有 URL ip_address_value/profile-57 的 /index.php。
    • 还不完全。我必须深入研究庞大的代码库,以检测如何为特定用户获取数据。
    猜你喜欢
    • 2013-04-27
    • 1970-01-01
    • 2017-01-25
    • 1970-01-01
    • 2021-12-12
    • 1970-01-01
    • 1970-01-01
    • 2018-06-25
    • 1970-01-01
    相关资源
    最近更新 更多