【问题标题】:.htaccess for rewrite url.htaccess 用于重写 url
【发布时间】:2020-06-01 20:56:47
【问题描述】:

你好,让我简单解释一下。

我有一个带有查询字符串的 url -“http://Domain.com/FolderName/Default.aspx?EditID=6”。

我需要显示如下所示的网址

"http://Domain.com/FolderName/Name"

...这意味着我想从 url 中删除 "Default.aspx?EditID=6" 部分并想用某个名称替换它...

你能帮帮我吗?

非常感谢....

【问题讨论】:

  • 您已使用 .htaccess 标记了问题,这是一个仅适用于 Apache 服务器的文件,但是您的示例使用的是通常仅在 IIS 上运行的 aspx 文件 (asp.net)(对于 asp.net您需要使用 web.config 而不是 .htaccess 文件)。您能否澄清一下您是在 IIS 下使用 ASP.net 还是在 Apache 上使用其他语言?

标签: asp.net .htaccess


【解决方案1】:

假设您启用了 mod_rewrite:

RewriteEngine On

#prevent an infinite rewrite loop
RewriteRule ^Community/Default\.aspx - [L]

#rewrite the names
RewriteRule ^Community/([^/]+) /Community/Default.aspx?N=$1 [L,NC,QSA]

在您的 /Community/Default.aspx 中,您需要将 EditName 解析为 EditID - 例如在您定义的某个表中查找它。

编辑:不幸的是,重写模块不知道哪个名称映射到哪个 ID(除非您为每个 ID 制定单独的规则,这根本无法扩展)。因此,重写模块将名称作为 N 传递给您的 Default.aspx,脚本负责找出所指的 ID。

【讨论】:

【解决方案2】:

这是我目前用来重定向以及允许某些域通过某些文件进行热链接的方法:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ /index.php [NC,L]
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)?google.com/.*$ [NC]
RewriteRule \.(gif|jpg|png|zip|js|css)$ - [F]

【讨论】:

    【解决方案3】:

    这应该可行(但我还没有实际测试过):

    # Turn on the rewriting engine
    RewriteEngine On
    # Change requests that match "FolderName/Name/" to "FolderName/Default.aspx?EditID=6"
    RewriteRule ^FolderName/Name/?$ FolderName/Default.aspx?EditID=6 [NC]
    

    【讨论】:

    • 您好,感谢您的帮助...但请记住,您必须在代码中编写基本 url 才能使用重写规则....
    猜你喜欢
    • 2016-01-02
    • 2012-04-03
    • 2013-11-06
    • 1970-01-01
    • 1970-01-01
    • 2012-07-30
    • 1970-01-01
    • 1970-01-01
    • 2011-08-30
    相关资源
    最近更新 更多