标签: url-rewriting

78
推荐指数
4
解决办法
17万
查看次数

urlencoded正斜杠正在破坏URL

关于系统

我的项目中有这种格式的URL: -

http://project_name/browse_by_exam/type/tutor_search/keyword/class/new_search/1/search_exam/0/search_subject/0
Run Code Online (Sandbox Code Playgroud)

其中关键字/类对意味着使用"class"关键字进行搜索.

我有一个常见的index.php文件,它为项目中的每个模块执行.只有一个重写规则可以从URL中删除index.php: -

RewriteCond $1 !^(index\.php|resources|robots\.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php [L,QSA]
Run Code Online (Sandbox Code Playgroud)

我在阅读搜索URL时准备搜索URL和urldecode()时使用urlencode().

问题

只有正斜杠字符会破坏导致404页面未找到错误的URL.例如,如果我搜索one/twoURL是

http://project_name/browse_by_exam/type/tutor_search/keyword/one%2Ftwo/new_search/1/search_exam/0/search_subject/0/page_sort/
Run Code Online (Sandbox Code Playgroud)

我该如何解决?我需要将index.php隐藏在URL中.否则,如果不需要,那么正斜杠就没有问题了,我可以使用这个URL: -

http://project_name/index.php?browse_by_exam/type/tutor_search/keyword/one
%2Ftwo/new_search/1/search_exam/0/search_subject/0
Run Code Online (Sandbox Code Playgroud)

.htaccess url-rewriting url-encoding http-status-code-404

70
推荐指数
3
解决办法
11万
查看次数

IIS URL重写{R:N}澄清

我无法理解{R:N}的目的.任何人都可以澄清什么时候使用
{R:0}vs.{R:1}

用法示例:

<action type="Redirect" url="http://www.{HTTP_HOST}/{R:0}" />
Run Code Online (Sandbox Code Playgroud)

我用{R:1}看过ScottGu

http://weblogs.asp.net/scottgu/archive/2010/04/20/tip-trick-fix-common-seo-problems-using-the-url-rewrite-extension.aspx

鉴于,下面有{R:0}

http://weblogs.asp.net/owscott/archive/2009/11/27/iis-url-rewrite-rewriting-non-www-to-www.aspx

看看下面的IIS链接,但无法安静地消化下面的定义:

条件模式的反向引用由{C:N}标识,其中N为0到9; 对规则模式的反向引用由{R:N}标识,其中N为0到9.请注意,对于两种类型的反向引用,{R:0}和{C:0},将包含匹配的字符串

iis-7 url-rewriting

63
推荐指数
1
解决办法
6万
查看次数

REST - 支持多个可能的标识符

对于我正在处理的网站,我们正在改进一种资源的网址 - 特别是从数字ID转向唯一的描述性字符串.类似的例子是从通过数字数据库ID识别用户切换到通过用户名识别它们(不是我们的具体情况,而是类似的).因此,访问用户信息的URL看起来像:

/users/48573
Run Code Online (Sandbox Code Playgroud)

现在它看起来像

/users/thisisausername.
Run Code Online (Sandbox Code Playgroud)

对于API的传统消费者来说,唯一的问题是我们仍然需要能够以某种方式通过数字ID获取它们.我们不需要REST URL本身来重定向(例如,/users/48573不应该重定向到/users/thisisausername),我们只需要一种方法来使用旧标识符获取正确的数据.该解决方案应该提供另一种方式来访问用户信息(方便地包括新标识符,用户名),或者通过ID访问用户名.一些可能的解决方案可能是

  • 使用节点指定一些替代的识别方法,例如 /users/byid/48573
  • 使用查询参数指定一些替代的识别方法,例如/users/48573?fetchby=id/users/48573?byid=true
  • 将username-by-id视为另一种资源,例如 /identifiers/username/48573

哪些(如果有的话)最接近正确的REST?你会如何处理这个问题?

api rest url url-rewriting

55
推荐指数
2
解决办法
2万
查看次数

IIS URL重写和Web.config

我对IIS没有任何了解,但我正在尝试解决将所有访问者重定向到domain.com/page到domain.com/page.html的问题

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <system.webServer>
    <rewrite>
          <rewriteMaps>
              <rewriteMap name="StaticRedirects">
                  <add key="/page" value="/page.html" />
              </rewriteMap>
            </rewriteMaps>
      </rewrite>
  </system.webServer>
</configuration>
Run Code Online (Sandbox Code Playgroud)

出现了几个问题:

  1. 我不知道哪里放文件.有一个用户根目录和一个htdocs目录,我试过两个,没有快乐.
  2. 我甚至不知道帐户是否可以重写,我试图找到它.

asp.net iis web-config url-rewriting

55
推荐指数
3
解决办法
18万
查看次数

用nginx重写对index.php的所有请求

在我的apache配置中,我有以下简单的重写规则

  1. 除非文件存在,否则将重写为index.php
  2. 在网址上你永远不会看到文件扩展名(.php)

我怎样才能在nginx中重写这个?

#
# Redirect all to index.php
#
RewriteEngine On

# if a directory or a file exists, use it directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteCond %{REQUEST_URI} (/[^.]*|\.)$ [NC]
RewriteRule .* index.php [L]
Run Code Online (Sandbox Code Playgroud)

这是我的nginx服务器块现在的样子,但它不起作用:(

root /home/user/www;
index index.php;

# Make site accessible from http://localhost/
server_name some-domain.dev;


###############################################################
# exclude /favicon.ico from logs
location = /favicon.ico {
    log_not_found off;
    access_log off;
}   

##############################################################
# Disable logging for robots.txt
location = /robots.txt {
    allow all;
    log_not_found off; …
Run Code Online (Sandbox Code Playgroud)

nginx url-rewriting

53
推荐指数
6
解决办法
14万
查看次数

如何从网站地址中删除文件扩展名?

我正在设计一个网站.我希望我的网站地址如下图所示:

隐藏了像(PHP/JSP)这样的文件扩展名

我不希望我的网站看起来像http://something.com/profile.phphttp://something.com/profile.php当有人打开我的网站时, 我希望在地址栏中删除扩展名.换句话说,我希望我的网站像:http://something.com/profile

作为第二个示例,您可以查看StackOverflow网站本身.

有人可以帮助我完成这项工作吗?谢谢!

php friendly-url url-rewriting

52
推荐指数
3
解决办法
9万
查看次数

Java中会话管理的最佳选择

在Java中管理会话的最佳方式.我听说cookie不是可靠的选项,因为它们存储在浏览器中,以后可以访问?它是否正确?如果可能的话,请用编码示例提出答案.

哪个是最好的:

  • URL重写:服务器将在URL链接的末尾添加一个附加参数
  • Form:server中的隐藏参数将在HTML中的每个表单中添加一个附加参数
  • cookie:服务器会要求浏览器维护cookie.

java cookies session servlets url-rewriting

51
推荐指数
2
解决办法
6万
查看次数

IIS URL重写与URL路由

我打算为Web窗体应用程序使用URL路由.但是,在阅读了一些帖子之后,我不确定这是否是一种简单的方法.

为网络表单使用URL重写模块更好吗?但是,它仅适用于IIS7.最初,有一些嗡嗡声,URL路由完全与Asp.Net MVC分离,它可以用于Web表单.

很想听到任何建议..

asp.net iis asp.net-mvc routing url-rewriting

48
推荐指数
3
解决办法
3万
查看次数

在web.config转换中替换IIS重写规则

我有一些IIS重写规则,我想根据环境而变化.开发重写规则在web.config文件中,然后在web.test.config文件的末尾我有:

    <appSettings>
         ...Some app settings tranforms here
    </appSettings>
    <system.webserver>
            <rewrite xdt:Transform="Replace">
              <rules>
                ... rules here
              </rules>
            </rewrite>
          </system.webserver>
        </configuration>
Run Code Online (Sandbox Code Playgroud)

我部署到测试时,我的应用程序设置正在转换,但是IIS重写规则却没有.我希望整个<rewrite>部分可以简单地用转换文件中的部分替换(根据http://msdn.microsoft.com/en-us/library/dd465326.aspx),但没有任何改变.

我也尝试过xdt:Transform="Replace" xdt:Locator="Match(name)">遵守个别规则:

<rule name="Test rule" stopProcessing="true" xdt:Transform="Replace" xdt:Locator="Match(name)">
Run Code Online (Sandbox Code Playgroud)

但这再次没有区别.

是否有可能替换web.config中的重写规则,如果是这样,我错过了什么?

asp.net iis web-config transform url-rewriting

47
推荐指数
4
解决办法
3万
查看次数