取代?通过/在网址中并使它们更友好 [英] replace ? by / in urls and make them more friendly

查看:54
本文介绍了取代?通过/在网址中并使它们更友好的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

您好,我都有一个类似

 http://www.domain.com/dash?do=about&w=me

但我想让它像

  http://www.domain.com/dash/about/me

我的htaccess文件中包含这些内容。

i have these things in my htaccess file.

     RewriteEngine On
     RewriteBase /
     Options All -Indexes
     RewriteCond %{REQUEST_METHOD} POST [NC]
    RewriteRule ^ - [L]
      ErrorDocument 403 /www.domain.com/error404.php
       RewriteCond %{HTTP_REFERER} !^http://(www\.)?domain.*$ [NC] 

       RewriteCond %{HTTPS} =on
       RewriteRule ^(.*)$ http://%{HTTP_HOST}/$1 [L,R=301]

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

     # redirect /profile?eid=1 to /eid/1
   RewriteCond %{THE_REQUEST} \s/+profile(?:\.php)?\?(eid)=(\d+)\s [NC]
     RewriteRule ^ /%1/%2? [R=301,L]

     # internally rewrite /eid/1 to /profile.php?eid=1
     RewriteRule ^(eid)/(\d+)$ profile.php?$1=$2 [L,QSA,NC]

     # redirect /dept?did=1 to /did/1
     RewriteCond %{THE_REQUEST} \s/+dept(?:\.php)?\?(did)=(\d+)\s [NC]
    RewriteRule ^ /%1/%2? [R=301,L]

    # internally rewrite /did/1 to /dept.php?did=1
     RewriteRule ^(did)/(\d+)$ dept.php?$1=$2 [L,QSA,NC]

     # redirect /job-details?job=1 to /job/1
      RewriteCond %{THE_REQUEST} \s/+job-details(?:\.php)?\?(job)=(\d+)\s [NC]
     RewriteRule ^ /%1/%2? [R=301,L]

     # internally rewrite /job/1 to /job-details.php?job=1
     RewriteRule ^(job)/(\d+)$ job-details.php?$1=$2 [L,QSA,NC]

      RewriteCond %{THE_REQUEST} \s/+enterprise\.php\?url=([^\s&]+) [NC]
      RewriteRule ^ /%1? [R=301,L]

      RewriteCond %{THE_REQUEST} \s/+(.+?)\.php[\s?] [NC]
      RewriteRule ^ /%1 [R=302,L,NE]

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

     RewriteCond %{REQUEST_FILENAME} !-f
     RewriteCond %{REQUEST_FILENAME} !-d
      RewriteRule ^(.+)$ enterprise.php?url=$1 [L,QSA]

任何人都可以建议实现此目的的方法我到处都有?do = about& w = me公用符号,只需要在页面后像/ about / me那样执行即可。

can any one suggest something to achieve this i have ?do=about&w=me comon everywhere and just need to do it like /about/me after the page.

推荐答案

由于有太多规则,它变得越来越难以维护,但是在这里是:

It is slowly becoming difficult to maintain due to so many rules but here it is:

ErrorDocument 403 /www.domain.com/error404.php
Options All -Indexes
RewriteEngine On
RewriteBase /

RewriteCond %{REQUEST_METHOD} POST [NC]
RewriteRule ^ - [L]

RewriteCond %{HTTP_REFERER} !^http://(www\.)?domain.*$ [NC] 
RewriteCond %{HTTPS} =on
RewriteRule ^(.*)$ http://%{HTTP_HOST}/$1 [L,R=301]

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

# redirect /profile?eid=1 to /eid/1
RewriteCond %{THE_REQUEST} \s/+profile(?:\.php)?\?(eid)=(\d+)\s [NC]
RewriteRule ^ /%1/%2? [R=301,L]

# internally rewrite /eid/1 to /profile.php?eid=1
RewriteRule ^(eid)/(\d+)$ profile.php?$1=$2 [L,QSA,NC]

# redirect /dept?did=1 to /did/1
RewriteCond %{THE_REQUEST} \s/+dept(?:\.php)?\?(did)=(\d+)\s [NC]
RewriteRule ^ /%1/%2? [R=301,L]

# internally rewrite /did/1 to /dept.php?did=1
RewriteRule ^(did)/(\d+)$ dept.php?$1=$2 [L,QSA,NC]

# redirect /job-details?job=1 to /job/1
RewriteCond %{THE_REQUEST} \s/+job-details(?:\.php)?\?(job)=(\d+)\s [NC]
RewriteRule ^ /%1/%2? [R=301,L]

# internally rewrite /job/1 to /job-details.php?job=1
RewriteRule ^(job)/(\d+)$ job-details.php?$1=$2 [L,QSA,NC]

RewriteCond %{THE_REQUEST} \s/+enterprise\.php\?url=([^\s&]+) [NC]
RewriteRule ^ /%1? [R=301,L]

RewriteCond %{THE_REQUEST} \s/+(.+?)\.php[\s?] [NC]
RewriteRule ^ /%1 [R=302,L,NE]

# /dash?do=about&w=me => /dash/about/me
RewriteCond %{THE_REQUEST} \s/+([^?]+)(?:.php)?\?do=([^&\s]+)&w=([^&\s]+)\s [NC]
RewriteRule ^ /%1/%2/%3? [R=301,L]

RewriteRule ^([\w-]+)/([\w-]+)/([\w-]+)/?$ $1.php?do=$2&w=$3 [L,QSA]

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

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)$ enterprise.php?url=$1 [L,QSA]

这篇关于取代?通过/在网址中并使它们更友好的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆