【问题标题】:Mod Rewrite for .htaccess.htaccess 的 Mod 重写
【发布时间】:2016-11-17 09:19:36
【问题描述】:

我的网址目前是这样的:http://www.example.com/?content=contact.php

但我希望用户在 URL 字段中包含以下内容:http://www.example.com/contact.php

我将此添加到我的 .htaccess 文件中:

RewriteEngine On
RewriteRule ^([^/]*)$ /?content=$1 [L]

但我现在收到此错误:

内部服务器错误

服务器遇到内部错误或配置错误,并且 无法完成您的请求。

请联系服务器管理员,[未提供地址]并告知 错误发生的时间,以及您可能做过的任何事情 这可能是导致错误的原因。

有关此错误的更多信息可能在服务器错误中可用 记录。

Apache/2.2.14 (Ubuntu) 服务器位于 www.example.com 端口 80

我做错了什么?

【问题讨论】:

    标签: php apache .htaccess mod-rewrite


    【解决方案1】:

    像这样尝试,我假设contact.php不是一个实际的文件,

    RewriteEngine on
    RewriteRule ^(.*)$ ?content=$1 [QSA,L]
    

    【讨论】:

    • 这将打开 http://www.example.com/contact.php 而不是打开 http://www.example.com 并设置 content=contact.php。你有别的想法吗?
    【解决方案2】:

    这应该可以工作

    RewriteRule ^(.*)$ index.php?content=$1
    

    此规则将所有请求重定向到 index.php 并作为 GET 变量“内容”传递。

    例如:

    http://www.example.com/contact.php -> ?content = contact.php

    http://www.example.com/some/folder/ -> ?content = some/folder/

    【讨论】:

    • 这将打开 http://www.example.com/contact.php 而不是打开 http://www.example.com 并设置 content=contact.php。你有别的想法吗?
    • 正如你所说:'但我希望用户在 URL 字段中具有以下内容:example.com/contact.php'
    • 问题是如果example.com/contact.php如果打开文件/contact.php因为它存在但它应该打开example.com/并设置GET参数content=contact.php
    • 您可以将所有文件放在一个文件夹中(例如 'template/'),然后从 index.php 请求(template/?content)。请注意,使用 GET 变量作为包含文件的路径可能会导致来自恶意用户的目录横向攻击。见:en.wikipedia.org/wiki/Directory_traversal_attack
    • 我的 index.php/index.php 上,我的 content-php 文件在 /content/ 上。我现在需要什么 .htaccess?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多