سؤال

وأنا تطوير التطبيق محليا (تحت اسم المجال <م> .dev ).

في أجل العمل مع عناوين المواقع الصديقة، لقد انشاء بلدي هتكس مثل هذا:

RewriteEngine on
# Externally redirect to add missing trailing slash
RewriteRule ^(([a-z0-9._\-]+/)*[a-z0-9_\-]+)$ http://example.com/$1/?%{QUERY_STRING}[NC,R,L]
RewriteRule ^about/$ about.php [NC,L]
RewriteRule ^issues/$ issues.php [NC,L]
RewriteRule ^issue/([a-z0-9_\-]+)/$ issue.php?slug=$1 [NC,L]

SetEnv PHP_VER 5
IndexIgnore *
Options +FollowSymLinks

وأنه يعمل بشكل جيد. مزعج، عند الذهاب على الانترنت، انها ليست كبيرة جدا:

http://example.com/issue/my-slug/#23 إرجاع أية متغير GET. لماذا؟

هل كانت مفيدة؟

المحلول

وتخميني، استنادا إلى التجربة السابقة هو RewriteBase، من المحتمل بسبب الخاص بك على خادم مشترك، أو بعض الدول الأخرى التكوين غير قياسي.

RewriteEngine on

#Set base as doc root.
RewriteBase /

# Externally redirect to add missing trailing slash
RewriteRule ^(([a-z0-9._\-]+/)*[a-z0-9_\-]+)$ http://mydomain.eu/$1/?%{QUERY_STRING}[NC,R,L]
RewriteRule ^about/$ about.php [NC,L]
RewriteRule ^issues/$ issues.php [NC,L]
RewriteRule ^issue/([a-z0-9_\-]+)/$ issue.php?slug=$1 [NC,L]

SetEnv PHP_VER 5
IndexIgnore *
Options +FollowSymLinks

نصائح أخرى

وأنا لا أرى أن

RewriteRule ^(([a-z0-9._\-]+/)*[a-z0-9_\-]+)$ http://mydomain.eu/$1/?%{QUERY_STRING}[NC,R,L]

يجب أن تطابق URL، ولكن أن يكون واحد فقط مع [R] العلم للقيام توجيه خارجي. محاولة علقت بقولها خط خارج، للتأكد من عدم وجود أي جزء آخر من التطبيق الخاص بك القيام إعادة التوجيه. تخميني هو أن هناك.

وهناك بعض المسافات مفقودة بين URL الاستبدال والأعلام. يمكنك أيضا تبسيط القاعدة الأولى على النحو التالي:

RewriteRule ^([a-z0-9._-]+/)*[a-z0-9_-]+$ %{REQUEST_URI}/ [NC,R=301,L]
scroll top