0

这是我的 .htaccess 代码

  ErrorDocument 404 /404.php
  Options -Multiviews

  RewriteEngine On

 RewriteBase /
 RewriteCond %{REQUEST_FILENAME} !-f
 RewriteCond %{REQUEST_FILENAME} !-d
 RewriteRule ^([^/]+)/?$ profile?username=$1 [NC,L]

 RewriteCond %{REQUEST_FILENAME}!-f
 RewriteCond %{REQUEST_FILENAME}!-d
 RewriteRule ^([a-z]+)/([a-z\-]+)$ /$1/$2.php 
 RewriteRule ^s/([^/]*)$ /s.php?share=$1 [L]

 RewriteCond %{HTTP_HOST} !^$
 RewriteCond %{HTTP_HOST} ^mywebsite.com [NC]
 RewriteCond %{HTTPS}s ^on(s)|
 RewriteRule ^ http%1://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

我希望我网站上的用户能够像 twitter 一样访问他们的个人资料。例如 www.mywebsite.com/Jim 实际上会被重写为 www.mywebsite.com/profile?username=Jim。

目前唯一有效的代码部分是允许没有 php 扩展名的 url。例如 www.mywebsite.com/home 而不是 www.mywebsite.com/home.php。

此外,s.php 的重写规则不能正常工作。我希望将 www.mywebsite.com/s/123456 页面写为 www.mywebsite.com/s?share=12345。

如果我的 htaccess 的顺序错误,我不会这样做,但这些似乎都不起作用。此外,当找不到页面时,即使我有 404.php 的重写规则,我仍然会得到默认的 Apache 404

4

1 回答 1

0

您的重定向需要首先,然后是您的个人资料,然后是您的分享,然后是最通用的 php 扩展:

ErrorDocument 404 /404.php
Options -Multiviews

RewriteEngine On
RewriteBase /

RewriteCond %{HTTP_HOST} !^$
RewriteCond %{HTTP_HOST} ^mywebsite.com [NC]
RewriteCond %{HTTPS}s ^on(s)|
RewriteRule ^ http%1://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

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

RewriteCond %{REQUEST_FILENAME}!-f
RewriteCond %{REQUEST_FILENAME}!-d
RewriteRule ^s/([^/]*)$ /s.php?share=$1 [L]

RewriteCond %{REQUEST_FILENAME}!-f
RewriteCond %{REQUEST_FILENAME}!-d
RewriteRule ^([a-z]+)/([a-z\-]+)$ /$1/$2.php [L]
于 2013-09-17T05:24:07.443 回答