0

我已经搜索过这个但没有人有同样的问题..

现在我需要一个代码来将丑陋的网址(这就是我所拥有的)转换为漂亮的网址:

  • 丑陋的网址:domain.com/aanmelden?referral=admin
  • 不错的网址:domain.com/aanmelden/admin

我尝试了很多代码,但没有人为我工作。):

建议?谢谢!

(我目前的 htaccess :)

ErrorDocument 401 /errordocs/401.php
ErrorDocument 403 /errordocs/403.php
ErrorDocument 404 /errordocs/404.php
ErrorDocument 500 /errordocs/500.php

RewriteEngine On
RewriteBase /

RewriteCond %{HTTP_HOST} !^domain.nl$ [NC]
RewriteRule ^(.*)$ http://domain.nl/$1 [L,R=301]

RewriteCond %{REQUEST_URI} !/$ 
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.php [NC,L]

RewriteCond %{THE_REQUEST} ^[A-Z]+\s.+\.php\sHTTP/.+
RewriteRule ^(.+)\.php $1 [R=301,L]

我需要放在哪里和什么?

编辑:

要清楚:

  • 如果用户访问 Nice Url,他们将停留在不错的 URL 上。
  • 如果用户访问 Ugly Url,他们将重定向到 Nice url。
4

1 回答 1

1

这是一个微不足道的重写:

如果admin可以是任何小写字符串,则使用该模式在请求 URI 的结尾([a-z]+)$之后和之前捕获一个或多个小写字母。/

RewriteEngine On
RewriteRule ^aanmelden/([a-z]+)$ aanmelden?referral=$1 [L]

如果admin真的只有admin,您可以将其硬编码为

RewriteEngine On
RewriteRule ^aanmelden/admin aanmelden?referral=admin [L]

更新

在您刚刚发布的现有重写的上下文中,您需要在添加 .php 的规则之前添加此规则,因为这也将匹配此模式。

# Do this before the rule that adds .php
# Also added condition so this doesn't apply to real files...
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^aanmelden/([a-z]+)$ aanmelden?referral=$1 [L]

RewriteCond %{REQUEST_URI} !/$ 
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.php [NC,L]

更新 2

如果您希望最终用户获取丑陋的 URL 并将其重写为好的 URL,请使用:

RewriteCond %{REQUEST_QUERYSTRING} referral=([a-z]+)
RewriteRule ^aanmelden aanmelden/%1 [L]
于 2012-04-05T13:38:39.270 回答