您好,我正在尝试设置我的网址设置,我有一些我已经要求的要求,但我的最后一个问题如下:
例如,如果用户尝试访问site.com/foo.php
,则应将其重定向到site.com/foo
;相反,如果用户输入site.com/foo
,则不应重定向,但请求的页面应为site.com/foo.php
。
这是我的.htacces:
RewriteEngine On
RewriteCond %{REQUEST_URI} ^(.*)\.html$
RewriteRule ^.*\.html$ %1.php [L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^([^/]+)/$ $1.php
AddType application/x-httpd-php .htm .html
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php
Redirect /anmeldung http://www.site.com/register
Redirect /anmeldung.htm http://www.site.com/register
Redirect /anmeldung.html http://www.site.com/register
Redirect /anmeldung.php http://www.site.com/register
Redirect /registierung http://www.site.com/register
Redirect /registierung.htm http://www.site.com/register
Redirect /registierung.html http://www.site.com/register
Redirect /registierung.php http://www.site.com/register
Redirect /register.htm http://www.site.com/register
Redirect /register.html http://www.site.com/register
如果有人可以帮助我,我真的很感激。 非常感谢。
更新
完整的htaccess:
RewriteEngine On
EewriteRule ^(.*)\.(php|html)$ /$1 [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ /$1.php [L]
Redirect /anmeldung http://www.site.com/register
Redirect /anmeldung.htm http://www.site.com/register
Redirect /anmeldung.html http://www.site.com/register
Redirect /anmeldung.php http://www.site.com/register
Redirect /registierung http://www.site.com/register
Redirect /registierung.htm http://www.site.com/register
Redirect /registierung.html http://www.site.com/register
Redirect /registierung.php http://www.site.com/register
答案 0 :(得分:2)
根据我上面的假设评论,您应该尝试
# This rewrites all incoming request to *.php or *.html to remove the extension. NOte the R=301 which give header indicating to the browser/spider that the resource has been relocated. The L indicates this is the last rule to be processed before sending headers to browser (which will start the process all over again) This rule MUST be first
RewriteRule ^(.*)\.(php|html)$ /$1 [R=301,L]
#This set of conditions is only applicable if the request is not a directory, is not itself a file, and has a similarly name file with .php extension. Here we do not perform a URL rewrite (i.e. [R]), but just pass this to the .php file as the last htaccess rule executed.
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.*)$ /$1.php [L]