简单的URL重写问题

时间:2012-02-08 21:03:37

标签: apache .htaccess url-rewriting

我无法使用.htaccess重写一个简单的网址。

我想重写的网址是:

http://www.domain.com/index.php?page=PAGE_NAME

我希望PAGE_NAME直接在域名之后,例如,如果PAGE_NAME是博客:

http://www.domain.com/blog

目前我尝试了以下但没有成功:

RewriteRule ^/?([a-zA-Z0-9_-]+)?$ index.php?page=$1

非常感谢所有帮助。

提前致谢。

我当前的.htaccess文件:

<IfModule mod_rewrite.c>

Options +FollowSymLinks
Options +Indexes
RewriteEngine On

ErrorDocument 404 /search.php?page=notfound

# Add WWW to URL
RewriteCond %{HTTP_HOST} ^cristianrgreco\.com$ [NC]
RewriteRule ^(.*)$ http://www.cristianrgreco.com/$1 [L,R=301]

# Remove trailing slashes from end of URL
RewriteCond %{HTTP_HOST} !^\.cristianrgreco\.com$ [NC]
RewriteRule ^(.+)/$ http://%{HTTP_HOST}/$1 [L,R=301]

# Rewrite main page URLs
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\?page=([^\ ]+) [NC] 
RewriteRule ^ %1? [L,R=301]  
RewriteRule ^([a-zA-Z0-9_-]+)$ index.php?page=$1 [L,NC]

# Rewrite download URLs
RewriteRule ^download/([a-zA-Z0-9._-]+)/?$ download.php?file=$1 

# Rewrite page navigation links
RewriteRule ^(.+?)/page-([a-zA-Z0-9_-]+)?$ $1.php?currentpage=$2

# Rewrite article URLs
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^/?([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)/?$ articles.php?article=$2

# Remove file extension from PHP files
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteRule ^([^\.]+)$ $1.php [NC,L,QSA]

</IfModule>

1 个答案:

答案 0 :(得分:0)

尝试将以下内容添加到站点根目录中的.htaccess文件中。

RewriteEngine on
RewriteBase / 

#add these next 2 lines if you need to redirect http://www.domain.com/index.php?page=PAGE_NAME to http://www.domain.com/PAGE_NAME
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\?page=([^\ ]+) [NC] 
RewriteRule ^ %1? [L,R=301]  

#send request to index.php
RewriteRule ^([a-zA-Z0-9_-]+)$ index.php?page=$1 [L,NC]