Php 是否将新规则添加到我的htaccess文件以替换?借/

Php 是否将新规则添加到我的htaccess文件以替换?借/,php,apache,.htaccess,mod-rewrite,Php,Apache,.htaccess,Mod Rewrite,这是我的htaccess文件,请看一下 ErrorDocument 404 /error404.php ErrorDocument 403 /error404.php Options -Indexes RewriteEngine On RewriteBase / RewriteCond %{REQUEST_METHOD} POST [NC] RewriteRule ^ - [L] RewriteCond %{HTTP_REFERER} !^http://(

这是我的htaccess文件,请看一下

 ErrorDocument 404 /error404.php
 ErrorDocument 403 /error404.php
 Options -Indexes 
  RewriteEngine On
   RewriteBase /

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

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

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

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

  ### rules to convert ?n1=v1&n2=v2 /n1/v1/n2/v2 

  RewriteCond %{THE_REQUEST} /profile\.php\? [NC]
  RewriteCond %{QUERY_STRING} ^([^&]+)&(.*)$
  RewriteRule ^ %{REQUEST_URI}?%1/%2 [DPI,E=QS:1]

   RewriteCond %{ENV:REDIRECT_QS} =1
   RewriteCond %{QUERY_STRING} ^([^=]+)=(.*)$
   RewriteRule ^ %{REQUEST_URI}?%1/%2 [DPI,E=QS:1]

   RewriteCond %{ENV:REDIRECT_QS} =1
    RewriteCond %{QUERY_STRING} ^[^&=]+$
   RewriteRule ^(profile)\.php$ /$1/%{QUERY_STRING}? [L,NE,R=302]

    # recursion rule to replace /n1/v1/n2/v2 to QUERY_STRING
     RewriteRule ^(profile)(?:\.php)?/([^/]+)/([^/]*)(/.*)?$ /$1.php$4?$2=$3 [L,QSA]

      ### end of convert ?n1=v1&n2=v2 /n1/v1/n2/v2

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

      RewriteCond %{REQUEST_FILENAME} !-f
      RewriteCond %{REQUEST_FILENAME} !-d  
     RewriteRule ^(.+)$ /page.php?brand=$1 [L,QSA]
我想在此文件中添加一个新规则,它可以将此urlwww.domain.com/profile?id=2替换为www.domain.com/profile/2

我是新来的请帮帮我

重要的一点是,我应该能够在php代码中获取get变量fro id

 $idis=$_GET['id'];
尝试:


你的规则越来越复杂了。有了这个正则表达式模式,排序变得更加重要。您可以通过以下方式完全访问.hts:

ErrorDocument 404 /error404.php
ErrorDocument 403 /error404.php
Options -Indexes -MultiViews
RewriteEngine On
RewriteBase /

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

RewriteCond %{HTTP_REFERER} !^http://(www\.)?domain.*$ [NC] 
RewriteRule \.(gif|jpg|png)$ http://www.domain.com [L]

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

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

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

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

### rules to convert ?n1=v1&n2=v2 /n1/v1/n2/v2 

RewriteCond %{THE_REQUEST} /profile\.php\? [NC]
RewriteCond %{QUERY_STRING} ^([^&]+)&(.*)$
RewriteRule ^ %{REQUEST_URI}?%1/%2 [DPI,E=QS:1]

RewriteCond %{ENV:REDIRECT_QS} =1
RewriteCond %{QUERY_STRING} ^([^=]+)=(.*)$
RewriteRule ^ %{REQUEST_URI}?%1/%2 [DPI,E=QS:1]

RewriteCond %{ENV:REDIRECT_QS} =1
RewriteCond %{QUERY_STRING} ^[^&=]+$
RewriteRule ^(profile)\.php$ /$1/%{QUERY_STRING}? [L,NE,R=302]

# recursion rule to replace /n1/v1/n2/v2 to QUERY_STRING
RewriteRule ^(profile)(?:\.php)?/([^/]+)/([^/]*)(/.*)?$ /$1.php$4?$2=$3 [L,QSA]

### end of convert ?n1=v1&n2=v2 /n1/v1/n2/v2

RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d  
RewriteRule ^ - [L]

RewriteRule ^profile/([^/]+)/?$ profile.php?id=$1 [QSA,NC,L]

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

RewriteRule ^(.+)$ page.php?brand=$1 [L,QSA]

我应该将此代码放在上面的文件中的什么位置。。。我的意思是在开始或结束时??此代码发送get data我无法接收从get Variable接收的数据您的其他规则正在覆盖此代码,请尝试在下面添加此命令rewriterule=>“###要转换的规则?n=1…”它表示内部服务器错误,并且它会重定向到profile/1我希望它像profile/id/1dear先生一样,你能告诉我怎么更换所有的吗?and=by/在URL中,因为我需要在很多地方这样做。我是100%,你可以告诉我,因为你是htaccess文件中最好的。虽然你的修改对我没有帮助,但我还是接受了答案。因为答案很好,并且与我想要的有点相关……下面的规则
要转换的规则?n1=v1&n2=v2/n1/v1/n2/v2
是我在SO上的一个答案中发布的规则,它们就是这样做的。如果出于某种原因,新问题对您的工作不起作用,请随时发布。我很乐意帮助您。先生,我在这里添加了另一个关于其他htaccess文件的问题。。它未与此htaccess链接。。请看一看,给我提些建议
ErrorDocument 404 /error404.php
ErrorDocument 403 /error404.php
Options -Indexes -MultiViews
RewriteEngine On
RewriteBase /

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

RewriteCond %{HTTP_REFERER} !^http://(www\.)?domain.*$ [NC] 
RewriteRule \.(gif|jpg|png)$ http://www.domain.com [L]

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

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

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

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

### rules to convert ?n1=v1&n2=v2 /n1/v1/n2/v2 

RewriteCond %{THE_REQUEST} /profile\.php\? [NC]
RewriteCond %{QUERY_STRING} ^([^&]+)&(.*)$
RewriteRule ^ %{REQUEST_URI}?%1/%2 [DPI,E=QS:1]

RewriteCond %{ENV:REDIRECT_QS} =1
RewriteCond %{QUERY_STRING} ^([^=]+)=(.*)$
RewriteRule ^ %{REQUEST_URI}?%1/%2 [DPI,E=QS:1]

RewriteCond %{ENV:REDIRECT_QS} =1
RewriteCond %{QUERY_STRING} ^[^&=]+$
RewriteRule ^(profile)\.php$ /$1/%{QUERY_STRING}? [L,NE,R=302]

# recursion rule to replace /n1/v1/n2/v2 to QUERY_STRING
RewriteRule ^(profile)(?:\.php)?/([^/]+)/([^/]*)(/.*)?$ /$1.php$4?$2=$3 [L,QSA]

### end of convert ?n1=v1&n2=v2 /n1/v1/n2/v2

RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d  
RewriteRule ^ - [L]

RewriteRule ^profile/([^/]+)/?$ profile.php?id=$1 [QSA,NC,L]

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

RewriteRule ^(.+)$ page.php?brand=$1 [L,QSA]