我们想要更改链接" www.example.com/page/login /"到" www.example.com/sayfa/giris"。我试过这个:RewriteRule ^page/^(.+[^/])$/ /sayfa/^(.+[^/])$ [L]
但是没有任何改变。有什么错误吗?
非常感谢您的回复@ geert3和@anubhava。但所有尝试都失败了。这是我的.htaccess内容:
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI} ^(.*)/{2,}(.*)$
RewriteRule . %1/%2 [R=301,L]
RewriteCond %{REQUEST_URI} /+[^\.]+$
RewriteRule ^(.+[^/])$ %{REQUEST_URI}/ [R=301,L]
RewriteRule /(uploads/.*) $1 [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ page.php?url=$1 [QSA,L]
答案 0 :(得分:1)
我认为您需要删除第二个^
并在第一个^
之后添加一个初始斜杠。必须删除$
后的斜杠。
^/page/(.+[^/])$
^
表示"行的开头" (在你的情况下,你想在路径前面/page
)。在方括号后,它表示"没有列出的字符" (即在你的情况下没有斜线)。在其他地方,没有任何意义。
$
表示"行尾"所以在它之后添加东西是没有意义的。
同样正如@Croises所说,你不能拥有"匹配"在右边。右侧是您的目标网址,因此您可以重新使用左侧的匹配项,使用环境变量或硬编码文本,但不能使用新的匹配项。所以没有^
,[]
,$
等。
例如,整个规则将成为:
^/page/(.+[^/])$ /sayfa/giris [L]
答案 1 :(得分:1)
您可以在DOCUMENT_ROOT/.htaccess
文件中使用此代码:
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI} ^(.*)/{2,}(.*)$
RewriteRule . %1/%2 [R=301,L]
RewriteCond %{REQUEST_URI} /+[^\.]+$
RewriteRule ^(.+[^/])$ %{REQUEST_URI}/ [R=301,L]
RewriteRule /(uploads/.*) $1 [R=301,L]
RewriteRule ^sayfa/giris/?$ /page/login [L,NC]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ page.php?url=$1 [QSA,L]
/sayfa/
文件夹中没有.htaccess。