在.htaccess中重写URL(文件夹名称为自定义URL,文件夹名称为变量值)

时间:2014-10-30 07:35:59

标签: php .htaccess mod-rewrite url-rewriting

我正在使用这两行重写任何网址,例如www.example.com/spyke(其中spyke是用户名,可以是任何用户名)..

RewriteCond %{REQUEST_URI} ^/([^/]+)? [NC]

RewriteRule ^/([^/]+)? http://www.example.com/index.php?id=82&user=$1 [L,R=301]

此ALMOST有效,但系统当前重定向到的URL是:

www.example.com/index.php?id=82&user=index.php

..而不是

www.mydomain.com/index.php?id=82&user=spyke

1)所以我想将www.mydomain.com/spyke重写为www.example.com/index.php?id=82&user=spyke ..有谁知道如何实现这个目标?

2)另外,我希望用户在地址栏中看到www.example.com/spyke而不是www.example.com/index.php?id=82&user=spyke - 这是否可行?

感谢!!!!!

罗埃尔

这是我的(更新的)htaccess文件btw:

<IfModule mod_rewrite.c>

RewriteEngine On

RewriteRule ^/typo3$ - [L]
RewriteRule ^/typo3/.*$ - [L]

RewriteCond %{REQUEST_FILENAME} !-f

RewriteCond %{REQUEST_FILENAME} !-d

RewriteCond %{REQUEST_FILENAME} !-l

RewriteRule .* /index.php


RewriteRule ^/([a-zA-Z0-9_-]+)? http://www.example.com/index.php?id=82&user=$1 [L,R=301]


</IfModule>

...

但这只会导致此链接: http://www.example.com/index.php?id=82&user=index

2 个答案:

答案 0 :(得分:2)

使用此htaccess:

RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]

RewriteRule ^([a-zA-Z0-9_-]+)$ index.php?id=82&user=$1 [L]
RewriteRule ^([a-zA-Z0-9_-]+)/$ index.php?id=82&user=$1 [L]

此网址:&#34; www.example.com/spyke"请求的

此htaccess加载&#34; index.php?id = 82&amp; user = spyke&#34;而不是那个!

此行加载文件(如果存在)!

    RewriteCond %{REQUEST_FILENAME} -f [OR]
    RewriteCond %{REQUEST_FILENAME} -l [OR]
    RewriteCond %{REQUEST_FILENAME} -d
    RewriteRule ^.*$ - [NC,L]

如果请求的网址不是文件,则加载&#34; index.php?id = 82&amp; user = [string]&#34;

答案 1 :(得分:0)

试试这个:

RewriteRule ^author/(.+)$ index.php?pagename=books&author=$1

我在这里找到了它:Redirect number 5

在您的情况下,您应该使用:

RewriteRule ^(.+)$ index.php?id=82&user=$1