http://example.com/bills.php?sort=highest
http://example.com/bills.php?sort=alpha
http://example.com/bills.php?sort=lowest
Run Code Online (Sandbox Code Playgroud)
所以上面的 url 按最高、字母和最低排序。他们通过表单使用 $_GET 方法。我想知道是否有一种方法可以在不更改 url 的情况下提交表单/获取 $_GET 数据?
<form action="bills.php" method="get">
<select onchange="this.form.submit();" name="sort" class="right sort">
<option>What would you like to sort by?</option>
<option value="highest" <?php if(isset($_GET['sort']) && $_GET['sort'] == 'highest'){?> selected="selected" <?php } ?>>Highest to Lowest</option>
<option value="lowest" <?php if(isset($_GET['sort'])&& $_GET['sort'] == 'lowest'){?> selected="selected" <?php } ?>>Lowest to Highest</option>
<option value="alpha" <?php if(isset($_GET['sort'])&& $_GET['sort'] == 'alpha'){?> selected="selected" <?php } ?>>Alphabetically</option>
</select>
</form>
Run Code Online (Sandbox Code Playgroud)
上面是我能够提交新排序请求的代码。
我想让我的网址保留在example.com/bills.php可以吗?
是否可以使用 .htaccess 重写 url?我尝试过一种 URL 重写方法,它允许我访问http://example.com/bills/alpha并且工作正常,但是当我选择一个新查询时,它会变成http://example.com/bills/bills/?sort=alpha …
我想重写 url (DotNetNuke 友好 URL),如下所示:
从/search.aspx?query=test到:~/SearchResults?search=test
我尝试过各种组合,但看起来它没有考虑网址中问号后面的部分
<RewriterRule>
<LookFor>.*/search.aspx?query=(.+)</LookFor>
<SendTo>~/SearchResults?Search=$1</SendTo>
</RewriterRule>
Run Code Online (Sandbox Code Playgroud)
但它不起作用..
我努力了:
<RewriterRule>
<LookFor>.*/search.aspx\?query=(.+)</LookFor>
<SendTo>~/SearchResults?Search=$1</SendTo>
</RewriterRule>
Run Code Online (Sandbox Code Playgroud)
但这也不适用于 url /search.aspx?query=test。我的 search.aspx 收到 404
这是DotNetNuke的web.config中的相关部分:
<friendlyUrl defaultProvider="DNNFriendlyUrl">
<providers>
<clear />
<add name="DNNFriendlyUrl"
type="DotNetNuke.Services.Url.FriendlyUrl.DNNFriendlyUrlProvider, DotNetNuke.HttpModules"
includePageName="true"
regexMatch="[^a-zA-Z0-9 _-]"
urlFormat="humanfriendly" />
</providers>
</friendlyUrl>
Run Code Online (Sandbox Code Playgroud)
是否有什么原因导致它跳过?
这是友好的 url 重写器的源代码(如果有帮助的话)。我不太擅长正则表达式,所以我可以使用一些帮助。
我一直在试图找出如何删除 .php 扩展名,我到处搜索,似乎大部分代码都不再工作了。下面的代码是我现在用来删除 .php 扩展名的代码,但它不起作用。
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !- f
RewriteRule ^([^\.]+)$ $1.php [NC]
Run Code Online (Sandbox Code Playgroud) nginx 新手,在重写时遇到了一些问题。
我有一个链接到子域 test.mydomain.com 的网站。我当前的 nginx 配置:
server {
listen 80 default_server;
root /test/public;
index index.html index.htm index.php;
server_name localhost;
access_log /var/log/nginx/localhost.laravel-access.log;
error_log /var/log/nginx/locahost.laravel-error.log error;
charset utf-8;
location /admin/ {
alias /test/public/admin/public/;
try_files $uri $uri/ /admin/index.php?$query_string;
}
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location = /favicon.ico { log_not_found off; access_log off; }
location = /robots.txt { log_not_found off; access_log off; }
error_page 404 /index.php;
include hhvm.conf; # The HHVM Magic Here
# Deny .htaccess file access
location ~ …Run Code Online (Sandbox Code Playgroud) 嗨,我对重写事情很陌生。我有一个 Apache 主机正在托管我的网站,我需要重写 url 以使其看起来比当前更好。
所以我有这个链接http://www.kalah.co.za/content.php?page=Civil%20Tactical%20Training我希望它看起来像http://www.kalah.co.za/Civil-Tactical -培训.html
现在我可以用这段代码完成我猜的第一部分
RewriteEngine On
RewriteRule ^([^/]*)\.html$ /content.php?page=$1 [L]
Run Code Online (Sandbox Code Playgroud)
但我还需要删除或更换 - 东西。我不知道什么对 SEO 更友好,任何建议和意见/建议将不胜感激。
PS:Windows 服务器和 apache 服务器的 .htaccess 在重写方面是否有所不同?
我想使用 .htaccess 将链接到个人资料页面的 URL 从 ID 号转换为名称。例如,在 Facebook 上,如果您要访问:
https://facebook.com/profile.php?id=4
Run Code Online (Sandbox Code Playgroud)
它会将您带到马克·扎克伯格的个人资料页面。但是,您也可以简单地访问:
https://facebook.com/zuck
Run Code Online (Sandbox Code Playgroud)
...这对用户更友好并且更容易记住。如何使用 htaccess 将 ID 号转换为用户名?我是否需要将其发送到 php 脚本来处理并发回名称?
我的 IIS 站点上有多个绑定,我想捕获所有请求
以下任何一个 -domainA.co.uk、www.domainA.co.uk、domainA.com、www.domainA.com
并重定向到网站上其他绑定之一的页面
www.domainB.com/my-folder/
通过 URL 重写可以实现这一点吗?
在尝试将 http 流量重定向到 https 时,我发现了以下两个规则,它们似乎在做同样的事情,但是它们在两个地方有细微的差异。我应该选择其中一个而不是另一个吗?有什么好处吗?(性能、极端情况等)
规则1:
<rule name="HTTP to HTTPS Redirect" enabled="true" stopProcessing="true">
<match url="(.*)" />
<conditions logicalGrouping="MatchAny">
<add input="{SERVER_PORT_SECURE}" pattern="^0$" />
</conditions>
<action type="Redirect" url="https://{HTTP_HOST}{REQUEST_URI}" redirectType="Permanent" />
</rule>
Run Code Online (Sandbox Code Playgroud)
规则 2:
<rule name="HTTP to HTTPS Redirect" stopProcessing="true">
<match url="(.*)" />
<conditions>
<add input="{HTTPS}" pattern="off" ignoreCase="true" />
</conditions>
<action type="Redirect" url="https://{HTTP_HOST}/{R:1}"
redirectType="Permanent" />
</rule>
Run Code Online (Sandbox Code Playgroud)
差异在于输入和重定向 URL,其中一个使用 {R:1},另一个使用 REQUEST_URI。
先感谢您
APIM 新手。尝试使用后端 api 期望的不同名称更改公开的查询字符串参数名称(而不是值)
例如,APIM 端点需要 /v1/Customer?CustomerId=123
我想我需要在入站部分使用 rewrite-url 策略?
要将其更改为:/v1/Customer?ExternalCustomerId=123
正在尝试这个,不起作用
<set-query-parameter name="ExternalCustomerId" exists-action="append">
<value>@(Context.Request.QueryString["CustomerId"])</value>
</set-query-parameter>
Run Code Online (Sandbox Code Playgroud)
错误:当前上下文中不存在名称“Context”
我一直在寻找一种通过用户脚本重写特定 URL 的方法(GreaseMonkey、TamperMonkey...)。我找到了替换特定域的所有部分但不仅仅是一个网址的解决方案。
更准确地说,在 iCloud Mail (icloud.com/mail) 上,我想将 https://www.icloud.com/message/current/en-us/index.html#compose替换 为 https://mail.google.com /mail/?view=cm&fs=1&tf=1
我根本不是脚本专家,我不知道从哪里开始
非常感谢
url-rewriting ×10
php ×4
.htaccess ×2
iis ×2
apache ×1
asp.net ×1
dotnetnuke ×1
fastcgi ×1
get ×1
greasemonkey ×1
hhvm ×1
laravel ×1
mod-rewrite ×1
nginx ×1
regex ×1
tampermonkey ×1
url ×1
userscripts ×1